Bog*_*n M 3 sql oracle select row-number oracle10g
我有以下SQL查询:
select
ID, COLUMN1, COLUMN2
from
(select ID, COLUMN1, COLUMN2, row_number() over (order by 2 DESC) NO from A_TABLE)
where
NO between 0 and 100
Run Code Online (Sandbox Code Playgroud)
我想要做的是选择查询的前100条记录
select ID, COLUMN1, COLUMN2 from ATABLE order by 2 DESC
Run Code Online (Sandbox Code Playgroud)
以下是问题:
显然,该order by条款不起作用.我注意到我必须在之后添加另一个order by 2 DESC子句(...) from ATABLE,以便我的查询工作.有什么我做错了吗?或者是预期的行为?
我该如何添加where条款?假设我只需要选择表格的前100条记录where COLUMN1 like '%value%'.我之前尝试过添加where子句,(...) from ATABLE但是它产生了一个错误......
救命?谢谢.
PS:我正在使用Oracle 10g R2.
rownum是一个伪列,用于在应用where子句后计算结果集中的行.
这是你想要得到的吗?
SELECT *
FROM (
SELECT id, column1, column2
FROM atable ORDER BY 2 DESC
)
WHERE ROWNUM < 100;
Run Code Online (Sandbox Code Playgroud)
因为它是一个伪列,它严格地是由where子句产生的行的计数器,所以它不允许你进行分页(即在200和300之间).
这可能是你正在寻找的:
SELECT *
FROM
(SELECT a.*, rownum rnum FROM
(SELECT id, column1, column2 FROM atable ORDER BY 2 DESC) a WHERE rownum <= 300)
WHERE rnum >= 200;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21710 次 |
| 最近记录: |