2013-07-14 3 views
-3

Есть команда TOP. Однако, если мы хотим не использовать команду TOP, что было бы лучшим способом выбрать 5 лучших записей?Как выбрать верхние записи из таблицы, не используя TOP/ROWNUM?

SELECT TOP 5 * FROM table1; 
+4

Вы используете SQL-сервер или другой диалект? почему ты хочешь сделать это? –

+0

Я хочу реализовать его, используя только команды SQL (которые являются общими для всех реализаций баз данных SQL). Причина заключается в том, чтобы понять, как работает функция TOP. – sheidaei

+1

Если вы хотите понять, как работает 'top n', лучшее место для поиска - это план запроса для запроса' top n'. Существует довольно простой (но очень неэффективный) способ сделать это в стандартном SQL, но он, вероятно, будет совершенно иным, как это делает RDBMS. –

ответ

1

Простой, но очень неэффективный подход:

select * from 
(select t.*, 
     (select count(*) 
     from table1 c 
     where c.order_column <= t.order_column) top_n 
from table1 t) sq 
where top_n <= 5 
Смежные вопросы