Ben*_*Ben 100 sql oracle oracle9i
我想使用oracle语法从表中只选择1行DUAL
.例如,我想执行此查询:
SELECT user
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
......它有40条记录.但我只需要一条记录.......而且,我想在没有WHERE
条款的情况下实现它.
我需要table_name字段中的内容,例如:
SELECT FirstRow(user)
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
min*_*rus 157
你使用ROWNUM.
即.
SELECT user FROM Dual WHERE ROWNUM = 1
Run Code Online (Sandbox Code Playgroud)
http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
小智 39
我在其中一条评论中发现了这个"解决方案".由于我正在查找它一段时间,我想强调一下(还不能评论或做这样的东西......),所以这就是我用过的东西:
SELECT * FROM (SELECT [Column] FROM [Table] ORDER BY [Date] DESC) WHERE ROWNUM = 1
Run Code Online (Sandbox Code Playgroud)
这将从表中的最新条目打印出所需的[Column]条目,假设始终通过SYSDATE插入[Date].
man*_*ni0 27
Oracle 12c中提供了此语法:
select * from some_table fetch first 1 row only;
select * from some_table fetch first 1 rows only;
select * from some_table fetch first 10 row only;
select * from some_table fetch first 10 rows only;
Run Code Online (Sandbox Code Playgroud)
^^我只是想证明无论多个所需的行数,都可以使用行或行(复数).)
据我所知,dual
Oracle中的表是一个只有一行的特殊表.所以,这就足够了:
SELECT user
FROM dual
Run Code Online (Sandbox Code Playgroud)
您应将嵌套查询用作:
SELECT *
FROM ANY_TABLE_X
WHERE ANY_COLUMN_X = (SELECT MAX(ANY_COLUMN_X) FROM ANY_TABLE_X)
Run Code Online (Sandbox Code Playgroud)
=>在PL / SQL中,“ ROWNUM = 1”不等于TSQL的“ TOP 1”。
因此,您不能使用这样的查询:“从any_table_x中选择*,其中rownum = 1由any_column_x排序;” 因为oracle获取第一行,然后应用order by子句。
我们有3个选择来获取Oracle DB表的第一行。
1)select * from table_name where rownum= 1
是最好的方法
2) select * from table_name where id = ( select min(id) from table_name)
3)
select * from
(select * from table_name order by id)
where rownum = 1
Run Code Online (Sandbox Code Playgroud)
"FirstRow"是一个限制,因此它where
不在条款中的select
条款中.它被称为rownum
select * from dual where rownum = 1;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
517247 次 |
最近记录: |