正如@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;
当我手动编写查询以检查数据库中的各种内容时,我使用此技术。 我没有在生产环境中使用它,但是现在当我标记它时,额外的排序不会影响性能。