SQL查询前5个结果,不使用LIMIT / ROWNUM / TOP

时间:2011-09-19 08:55:47

标签: mysql sql oracle tsql postgresql

如何在不使用LIMIT / ROWNUM / TOP的情况下从一组有序结果中选择前5个条目,具体取决于DBMS?

1 个答案:

答案 0 :(得分:8)

标准ANSI SQL解决方案:

SELECT *
FROM ( 
    SELECT col1, 
           col2,
           row_number() over (order by some_col) as rn
    FROM the_table
) t
WHERE rn <= 5

适用于Oracle,PostgreSQL,DB2,SQL Server,Sybase,Teradata和即将推出的Firebird 3.0,但不适用于MySQL,因为它仍然不支持窗口函数。