SQL-запрос для 5 лучших результатов без использования LIMIT / ROWNUM / TOP - PullRequest
1 голос
/ 19 сентября 2011

Как выбрать 5 лучших записей из упорядоченного набора результатов без использования LIMIT / ROWNUM / TOP в зависимости от СУБД?

1 Ответ

8 голосов
/ 19 сентября 2011

Стандартное решение 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, поскольку все еще не поддерживает оконные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...