Как говорит @James, он упорядочит все записи, а затем получит первые 20 строк.
Так как это так, вы гарантированно получите 20 первых опубликованных статей, более новые не будут показаны.
В вашей ситуации я рекомендую добавить desc
к order by publish_date
, если вы хотите , то самые новые статьи, то новейшая статья будет первой.
Если вам нужно сохранить результат в порядке возрастания, и при этом вам нужны только 10 самых новых статей, вы можете попросить mysql отсортировать результаты два раза.
Приведенный ниже запрос сортирует результат по убыванию и ограничивает результат 10 (это запрос в скобках). Он все равно будет отсортирован в порядке убывания, и мы не удовлетворены этим, поэтому мы просим mysql отсортировать его еще раз. Теперь у нас самый новый результат в последнем ряду.
select t.article
from
(select article, publish_date
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Если вам нужны все столбцы, это делается так:
select t.*
from
(select *
from table1
order by publish_date desc limit 10) t
order by t.publish_date asc;
Я использую эту технику, когда пишу запросы вручную, чтобы исследовать базу данных на предмет различных вещей. Я не использовал его в производственной среде, но теперь, когда я его отмечал, дополнительная сортировка не влияет на производительность.
publish_date
s одинаковы, их упорядочение не дает определенных результатов, а это означает, что если вы используетеLIMIT
нумерацию страниц, вы можете получить одинаковые элементы на разных страницах!