我返回一个带有位置的表:
select *
from (
select *, row_number() over() as position
from organization
) result
where data1 = 'Hello';
Run Code Online (Sandbox Code Playgroud)
返回这个,这是正确的:
data1 | Hello
data2 | Joe
position | 5
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时:
select position
from (
select *, row_number() over() as position
from organization
) result
where data1 = 'Hello';
Run Code Online (Sandbox Code Playgroud)
它返回:
position | 25
Run Code Online (Sandbox Code Playgroud)
这里缺少什么?如何修改此查询以返回 5?
RDBMS 中的表是一组无序的行。如果 中没有order by子句row_number,它将任意分配行号。
使用适当的order by子句以获得一致的结果:
select position
from (
select *,
row_number() over(
order by ?? -- add column(s) here
) as position
from organization
) result
where data1 = 'Hello';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |