Ограничение MySQL по убыванию
Можно ли написать запрос для использования того же "LIMIT (from), (count)", но получить результат в обратном направлении?
В примере, если у меня есть 8 строк в таблице, и я хочу получить 5 строк в два этапа, я бы:
запрос первого шага:
select * from table limit 0, 5
результат первого шага:
first 5 rows;
запрос второго шага:
select * from table limit 5, 5
результат второго шага:
last 3 rows;
Но я хочу получить его наоборот. Я хочу сказать, что с первого шага я хочу последние 3 строки, а со второго я хочу 5 первых строк. Спасибо за ваш ответ
Ответы
Ответ 1
Нет, вы не должны этого делать. Без предложения ORDER BY
вы не должны полагаться на то, что результат будет одинаковым от запроса к запросу. Это может хорошо работать во время тестирования, но порядок неопределен и может сломаться позже. Используйте заказ.
SELECT * FROM table1 ORDER BY id LIMIT 5
Кстати, другой способ получить последние 3 строки - отменить порядок и выбрать первые три строки:
SELECT * FROM table1 ORDER BY id DESC LIMIT 3
Это всегда будет работать, даже если количество строк в результирующем наборе не всегда равно 8.
Ответ 2
да, вы можете поменять эти 2 запроса
select * from table limit 5, 5
select * from table limit 0, 5
Ответ 3
Этот способ сравнительно проще
SELECT doc_id,serial_number,status FROM date_time ORDER BY date_time DESC LIMIT 0,1;