MS Access Limit

sql ms-access

8251 просмотра

5 ответа

Что эквивалентно MySQL Limit в доступе MS. TOP недостаточно, так как я собираюсь использовать его для нумерации страниц.

Спасибо

Автор: wnoveno Источник Размещён: 12.11.2019 09:13

Ответы (5)


2 плюса

Решение

Поскольку не похоже, что у вас есть какой-либо тип последовательного уникального номера ключа для этих строк, вам нужно создать столбец ранжирования: Как ранжировать записи в запросе

Вам нужно определить, сколько строк за один раз вы вернете N = (10, 25,100).

Вам необходимо отслеживать, на какой «странице» находится пользователь, а также значения первого и последнего ранга.

Затем, когда вы делаете вызов для следующей страницы, это либо следующие N строк, которые> или <первый и последний ранги (в зависимости от того, переходят ли пользователи на предыдущую или следующую страницу).

Я уверен, что есть способ рассчитать последнюю страницу, первую страницу и т. Д.

Автор: JeffO Размещён: 14.10.2009 12:56

4 плюса

Там нет ни одного. Лучше всего добавить столбец идентификаторов в качестве первичного ключа (если у вас его еще нет) и выводить чанк, выполняя цикл:

SELECT * FROM table
 WHERE id >= offset AND id <= offset + chunk_size - 1

пока вы не получите все ряды.

Автор: James Cronen Размещён: 14.10.2009 03:01

3 плюса

Любопытно, что в документации Microsoft есть несколько ссылок на LIMIT TO nn ROWSсинтаксис для Access Database Engine:

ACC2002: настройка совместимости ANSI 92 в базе данных не позволяет использовать ключевое слово DISTINCT в агрегатных функциях

О режиме запросов ANSI SQL (MDB)

Тем не менее, реальное тестирование, кажется, подтверждает, что этот синтаксис никогда не существовал в версии выпуска Access Database Engine. Возможно, это одна из тех функций, которые команда SQL Server хотела добавить в Jet 4.0, но команда Windows приказала откатить ее? Как бы то ни было, похоже, мы должны просто объяснить это ошибкой документации, которую Microsoft не потратит на исправление :(

Если вам нужно выполнить разбиение на страницы на стороне сервера **, я предлагаю вам рассмотреть более способный, современный продукт SQL с лучшей документацией;)

** концептуально, то есть: Access Database Engine не является серверной СУБД.

Автор: onedaywhen Размещён: 14.10.2009 10:24

0 плюса

Единственный способ получить SQL подкачки, похожий на оператор Limit, используя ключевые слова TOP, заключается в следующем:

Первый шаг:

sql = "select top" & LESS_COUNT & "* from (SELECT top" & (PAGE_COUNT * getPage) & "* FROM (SELECT" & COLUMNS & "FROM" & TABLENAME & ") как TBL" & getWhere & getOrderby ("asc") & ") как TBL" & getOder ( "по убыванию")

Второй шаг:

sql = "SELECT TOP" & PAGE_COUNT & "* FROM (" & sql & ") как TBL" & getOrderby ("asc")

Обобщить; Вы должны изменить порядок и сделать результаты с ног на голову в течение 3 раз.

Автор: Orhun Alp Oral Размещён: 05.04.2011 01:21

-1 плюса

перенести ваш проект на PHP и MySQL. Лучшая поддержка для таких действий и запросов и намного лучшая онлайн-документация. Как 16-летний опытный разработчик БД, я вырос в пренебрежении MS Access и MS SQL со страстью, не имеющей себе равных. Это связано исключительно с отсутствием поддержки и документации.

Автор: Kevin Loring Размещён: 07.12.2009 05:30
Вопросы из категории :
32x32