Доступ к ключевому слову базы данных LIMIT - PullRequest
5 голосов
/ 29 декабря 2010

Я пытаюсь заставить мою функцию листинга страниц работать в ASP с базой данных Access, но я не знаю альтернативы LIMIT в Microsoft SQL.Я пробовал TOP, но это не похоже на работу.

Вот заявление, которое я использую с MySQL:

SELECT  * FROM customers ORDER BY customerName DESC LIMIT 0, 5

Как я могу преобразовать это для работы с базой данных Access?

Ответы [ 3 ]

14 голосов
/ 30 декабря 2010

В соответствии с представлением ms-access:

SELECT TOP(5) * FROM customers ORDER BY customerName; 

выдаст ошибку "Оператор SELECT содержит зарезервированное слово",

правильный синтаксис:

SELECT TOP 5 * FROM customers ORDER BY customerName; 

(обратите внимание на скобки) ..

3 голосов
/ 30 мая 2014

Верх (5) обманчив. Внутренне база данных возвращает все записи, затем Access просто показывает 5 лучших строк. Я бы использовал ключевое слово LIMIT вместо Top (n).

2 голосов
/ 14 июня 2015

Прямого эквивалента в доступе для LIMIT нет, но оператор TOP можно манипулировать, чтобы он работал аналогичным образом, говоря: "... LIMIT BY 50, 250" и т. Д.Опытным путем я обнаружил, что если вы хотите получить «следующие 50» записей со смещением 250, вы можете попробовать следующее:

SELECT * FROM (ВЫБРАТЬ ТОП 50, вкладка 2. * ОТ (ВЫБОР ТОП 300, вкладка 1* ИЗ my_table AS tab1 ORDER BY column_name ASC) AS tab2 ORDER BY column_name DESC) ORDER BY column_name ASC;

При этом должны возвращаться записи из строки 250–300 в порядке возрастания (при условии, что они существуют) с уникальным индексом или без него.Предложение WHERE могло бы привести в порядок результаты в случае необходимости.

Немного запутанно, но я надеюсь, что это поможет.

...