如何从oracle sql中只select1行?

我想使用oracle语法从表DUAL只select1行。 例如,我想执行这个查询:

 SELECT user FROM DUAL 

它会有40条logging 但我只需要一个logging。 …而且,我想在没有WHERE子句的情况下实现它。

我需要在table_name字段中的东西,如:

 SELECT FirstRow(user) FROM DUAL 

你使用ROWNUM。

即。

 SELECT user FROM Dual WHERE ROWNUM = 1 

http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

我发现这个“解决scheme”隐藏在其中一个评论中。 自从我查了一会儿,我想突出一点(不能评论或做这样的事情…),所以这是我用的:

 SELECT * FROM (SELECT [Column] FROM [Table] ORDER BY [Date] DESC) WHERE ROWNUM = 1 

这会从表中最新的条目中打印出所需的[Column]条目,假定[Date]总是通过SYSDATE插入。

在Oracle中没有limit 1条件(即MySQL / PostgresSQL),您需要指定where rownum = 1

“FirstRow”是一个限制,因此它在where子句中不在select子句中。 这就是所谓的rownum

 select * from dual where rownum = 1; 

据我所知,Oracle中的dual表是只有一行的特殊表。 所以,这就足够了:

 SELECT user FROM dual 

这个语法在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; 

^^我只是想certificate行或行(复数)可以被使用而不pipe所需的行数是多less)。

答案是:

你应该使用嵌套查询:

 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 any from any_table_x where rownum = 1 order by any_column_x;” 因为oracle得到第一行然后应用子句的顺序。

如果有任何行会做,请尝试:

 select max(user) from table; 

没有where子句。

 select name, price from ( select name, price, row_number() over (order by price) r from items ) where r between 1 and 5; 

select max()更灵活的是:

 select distinct first_row(column_x) over (order by column_y,column_z,...) from Table_A