Так же, как @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;
Я использую эту технику, когда пишу запросы вручнуюисследовать базу данных на различные вещи.Я не использовал его в производственной среде, но теперь, когда я его отмечал, дополнительная сортировка не влияет на производительность.