【发布时间】:2020-07-27 19:57:50
【问题描述】:
我正在尝试从以下查询访问第三行:
SELECT *
FROM (SELECT
OFFENSEDESC,
COUNT(*) AS num
FROM
CRIMEPROFILE
GROUP BY
OFFENSEDESC
ORDER BY num DESC) o
WHERE rownum = 3
但是,它不返回任何行,我不确定为什么会这样,感谢任何帮助。注意:ORACLE SQL
【问题讨论】:
-
可能,子查询返回少于 3 行。您是否尝试单独运行子查询以查看它返回的内容?
-
不,它返回 68 行,奇怪的是,rownum >= 3 有效,但我只想要第 3 行。此外,无论我选择什么索引 (rownum = n),它都不会返回任何行。
-
你试过
rownumber()吗? -
OFFSET 2 ROWS FETCH NEXT 1 ROWS 只有这个技巧
-
请参阅 how to select even records from a table in oracle? 以了解为什么
ROWNUM = 3不起作用(或者,在这种情况下,为什么MOD( ROWNUM, 2 ) = 0不起作用;但该解释同样适用于3而不是偶数行)。解决方案是您需要首先ORDER BY,然后生成ROWNUM,最后过滤并在单独的嵌套子查询中执行每个步骤。
标签: sql oracle pagination rownum