Реализация аналога LIMIT из MySQL в MS SQL
В MS SQL отсутствует LIMIT в SELECT'е. Это поразительно и глупо, но это так. И после MySQL это невероятно раздражает. Поэтому было найдено решение проблемы. Сравнительно медленное, но зато работающее не только в новых версиях MS SQL (где есть row_number(), облегчающий жизнь). Итак, для того, чтобы сделать то же, что в MySQL делает следующий запрос:
SQL:
-
SELECT *
-
FROM `some_table`
-
LIMIT 10, 20
в MS SQL надо написать:
SQL:
-
SELECT top 20 * FROM [some_table]
-
WHERE [primary_key_field] NOT IN
-
(
-
SELECT top 10 [primary_key_field]
-
FROM [some_table]
-
ORDER BY [primary_key_field]
-
)
-
ORDER BY [primary_key_field]

