Разница между верхним и конечным ключевым словом в SQL
Быстрый вопрос. Предположим, у меня есть следующие два запроса:
SELECT TOP 2 * FROM Persons;
и
SELECT * FROM Persons limit 2;
Я хочу знать разницу между выполнением вышеуказанных 2 запросов?
В основном, я хочу знать, когда следует использовать ключевое слово limit
и когда целесообразно использовать ключевое слово top
.
Также, как база данных возвращает результаты на основе вышеуказанных 2 запросов.
Ответы
Ответ 1
Если вы используете SQL Server, используйте TOP
, если вы используете MySQL
или Postgres
использовать Limit
!
AFAIK нет продукта, который в настоящее время поддерживает оба. Здесь один список текущих реализаций и здесь еще один (охватывает больше продуктов, но менее подробно)
Ответ 2
Как указано в моем комментарии к Мартину Смиту выше, есть продукты, которые поддерживают как LIMIT
, так и TOP
(как вы можете видеть здесь). Разница в том, что TOP
выбирает только первые n записей, но LIMIT
позволяет определять смещение для получения определенного диапазона записей:
SELECT * FROM ... LIMIT 5 OFFSET 10
Этот оператор выбирает первые 5 записей, пропустив 10 записей, и это невозможно с помощью TOP
.
Приведенный выше пример проверяется только на связанную выше DBS I. Я не проверял стандарт SQL из-за нехватки времени.
Ответ 3
TOP и LIMIT работают на amazon Redshift
Ответ 4
limit
работает на MySQL и PostgreSQL, top
работает на SQL Server, rownum
работает с Oracle.
Ответ 5
Нет никакой разницы. Ключевые слова TOP
и LIMIT
работают одинаково и возвращают то же самое.
Ответ 6
одна большая ошибка, LIMIT медленно, потому что select является полным, а затем сервер базы данных возвращает только ограниченные данные. Когда это возможно, используется для TOP.