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