oracle 多选行,如何从oracle sql中只选择1行?

如何从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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值