下面的查询功能完善,可以查询单个表以查找通过序列userid号列添加的最近50个用户名。
userid
到目前为止的逻辑是:找出最高的用户ID;从中减去50; 将用户名拉回更大的位置。
但是,它看起来并不优雅,并且使用两个子查询来实现其目标:
SELECT username FROM table WHERE userid IN (SELECT userid FROM table WHERE userid > (SELECT MAX(userid) -50 FROM table))
有没有办法减少嵌套?更高效?更优雅?任何帮助将不胜感激,因为这不是最好的方法!
欢呼声,非常感谢 阿里
提供的答案是正确的。您可以使用ROWNUM选择TOP-N样式结果。
但是请注意,请注意行数是在谓词之后但在ORDER BY之前分配给查询结果的。尝试如下操作:
SELECT username FROM (SELECT username FROM table ORDER BY userid DESC) WHERE rownum <= 50