SQL LIMIT не работает как исключение - PullRequest
1 голос
/ 29 марта 2012

Я всегда думал, что LIMIT в запросе выбирает только те числа, которые я установил.

Предположим, у меня есть два столбца для выбора с первичным ключом - id. У меня 90 рядов.

SELECT name, lastname 
FROM some_table 
WHERE id = '123' LIMIT 0, 30

выберет ровно 30 строк. Хорошо, но

SELECT name, lastname 
FROM some_table 
WHERE id = '123' LIMIT 30, 60

выберет более 30 строк. Что ж, я делаю это для AJAX paginator, используя PHP + mysql.

Как я могу сделать это правильно?

Ответы [ 6 ]

8 голосов
/ 29 марта 2012

предел смещения, количество строк.так что это должно быть ограничение 30,30, а не 30, 60, если вы хотите 30 строк.

2 голосов
/ 29 марта 2012
[LIMIT {[offset,] row_count | row_count OFFSET offset}]

второй параметр - количество строк.

2 голосов
/ 29 марта 2012

Когда вы указываете два аргумента для LIMIT, второй является максимальным количеством строк, которые нужно вернуть; поэтому вместо LIMIT 30, 60 напишите LIMIT 30, 30. (См. объяснение LIMIT в разделе 12.2.9 «Синтаксис SELECT» справочного руководства MySQL 5.6 .)

2 голосов
/ 29 марта 2012
SELECT name, lastname FROM some_table WHERE id = '123' LIMIT 30, 30;

На простом языке,

Первые 30 - это номер начальной записи Второе 30 - это 30 + 30, что является 60-й записью.

Это должно работать, чтобы получить записи между 30 и 60.

1 голос
/ 29 марта 2012

В соответствии с MySQL Documentation второе число оператора limit - это количество строк, которые должны быть возвращены.Если вы хотите получить строки 31-60, то вам нужно указать

SELECT name, lastname FROM some_table WHERE id = '123' LIMIT 30, 30

Вы просите MySQL дать вам 60 строк, начинающихся со смещения 30.

1 голос
/ 29 марта 2012

Чтение документации .

LIMIT 30 -- get 30 records
LIMIT 30, 60 -- skip 30 records and get next 60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...