Ali*_*i J 2 sql database oracle
下面的查询功能完备,查询单个表以查找通过序列userid号列添加的最后50个用户名.
到目前为止的逻辑是:找出最高的用户ID; 从中减去50; 将用户名拉回到更大的位置.
但是,它看起来并不优雅,并使用两个子查询来实现它的目标:
SELECT username
FROM table
WHERE userid IN
(SELECT userid
FROM table
WHERE userid >
(SELECT MAX(userid) -50
FROM table))
Run Code Online (Sandbox Code Playgroud)
有没有办法减少嵌套?更高效?更优雅?任何帮助将不胜感激,因为这不是最好的方式!
干杯和非常感谢
阿里
提供的答案是正确的.您可以使用ROWNUM选择TOP-N样式结果.
请注意,请注意在预测之后但在ORDER BY之前将rownum分配给查询结果.尝试以下内容:
SELECT username
FROM
(SELECT username
FROM table
ORDER BY userid DESC)
WHERE rownum <= 50
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |