如何从oracle sql中只选择1行?
我想使用oracle语法从表DUAL中仅选择1行。例如,我想执行此查询:
SELECT user
FROM DUAL
......它有40条记录。 但我只需要一条记录。 ...而且,我想在没有WHERE条款的情况下实现它。
我需要table_name字段中的内容,例如:
SELECT FirstRow(user)
FROM DUAL
Ben asked 2019-06-12T21:34:47Z
11个解决方案
133 votes
你使用ROWNUM。
即。
SELECT user FROM Dual WHERE ROWNUM = 1
[http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm]
mindvirus answered 2019-06-12T21:35:08Z
28 votes
我在其中一条评论中发现了这个“解决方案”。 由于我正在查找它一段时间,我想强调一下(还不能评论或做这样的东西......),所以这就是我用过的:
SELECT * FROM (SELECT [Column] FROM [Table] ORDER BY [Date] DESC) WHERE ROWNUM = 1
这将从表中的最新条目打印出所需的[Column]条目,假设始终通过SYSDATE插入[Date]。
answered 2019-06-12T21:35:39Z
15 votes
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;
^^我只是想证明无论多个所需的行数,都可以使用行或行(复数)。)
mancini0 answered 2019-06-12T21:36:10Z
6 votes
据我所知,Oracle中的dual表是一个只有一行的特殊表。 所以,这就足够了:
SELECT user
FROM dual
ypercubeᵀᴹ answered 2019-06-12T21:36:34Z
5 votes
在Oracle中没有limit 1条件(即MySQL / PostgresSQL),您需要指定where rownum = 1。
Oh Chin Boon answered 2019-06-12T21:36:59Z
5 votes
“FirstRow”是一个限制,因此它位于where子句中,而不是select子句中。 它被称为rownum
select * from dual where rownum = 1;
gdoron answered 2019-06-12T21:37:24Z
3 votes
答案是:
您应该使用嵌套查询:
SELECT *
FROM ANY_TABLE_X
WHERE ANY_COLUMN_X = (SELECT MAX(ANY_COLUMN_X) FROM ANY_TABLE_X)
=> 在PL / SQL中,“ROWNUM = 1”不等于TSQL的“TOP 1”。
所以你不能使用这样的查询:“select * from any_table_x,其中rownum = 1 order by any_column_x;” 因为oracle获取第一行然后应用order by子句。
Shortly FD answered 2019-06-12T21:38:04Z
2 votes
如果有任何行,请尝试:
select max(user)
from table;
没有where子句。
Raihan answered 2019-06-12T21:38:36Z
1 votes
select name, price
from (
select name, price,
row_number() over (order by price) r
from items
)
where r between 1 and 5;
Andrew answered 2019-06-12T21:38:54Z
0 votes
我们有3个选择来获取Oracle DB表中的第一行。
1)select * from table_name where id = ( select min(id) from table_name)是最好的方法
2)select * from table_name where id = ( select min(id) from table_name)
3)
select * from
( select * from table_name order by id )
where nownum= 1
Dnyaneshwar Pawar answered 2019-06-12T21:39:34Z
-1 votes
比select max()更灵活的是:
select distinct first_row(column_x) over (order by column_y,column_z,...) from Table_A
Guest answered 2019-06-12T21:39:59Z