【问题标题】:MySQL Query - Show Latest 3 Records with Order by AscendingMySQL 查询 - 按升序显示最新的 3 条记录
【发布时间】:2013-09-30 08:49:37
【问题描述】:

有没有办法用 Order By id asc 获取 latest 3 cmets

这是我的表结构:表名:cmets

现在我正在使用这个查询:

SELECT *
FROM `comments`
ORDER BY id ASC
LIMIT 0 , 3

但它会返回结果,这很明显:

但我想显示最新的 3 条记录,但按升序排列。 像这样:

【问题讨论】:

  • 写得很好的问题。
  • 不,这不是重复的,@djot!这只是最后一条记录,这要简单得多。
  • @markus 好吧,不直接说这个。但是在这里复制数百个答案,所有答案都显示了 Mysql 的订单方向DESC

标签: php mysql sql


【解决方案1】:

使用下面的代码:

SELECT * 
   FROM (SELECT *
      FROM `comments` ORDER BY id DESC LIMIT 0 , 3) t
ORDER BY id ASC;

先按id降序排序,得到3个结果,然后对这3个结果按id升序排序。

【讨论】:

    【解决方案2】:
    (SELECT * FROM `comments` ORDER BY id DESC limit 3 ) ORDER BY id ASC
    

    只需使用第二个 ORDER BY 对 DESC 查询重新排序 :)

    【讨论】:

    • 很好,很简单,而且很有效。我以前从未想过这样做。
    • 这应该是公认的答案,它避免了子查询。
    • 太棒了,我花了很长时间才找到这个解决方案,谢谢!我必须说,我真的不明白为什么SELECT * FROM table ORDER BY id DESC, time ASC LIMIT 5 不起作用?
    【解决方案3】:
    SELECT * FROM (
      SELECT * 
      FROM comments   
      ORDER BY id DESC
      LIMIT 3
    ) t ORDER by id ASC
    

    【讨论】:

      【解决方案4】:

      试试这个

      select * from (select * from `comments` ORDER BY id desc limit 0,3) t
      order by id asc;
      

      【讨论】:

        【解决方案5】:

        应该这样做:

        SELECT *
        FROM `comments`
        ORDER BY id DESC
        LIMIT 0 , 3
        

        【讨论】:

        • 通过解释为什么会这样做,让你的答案成为一个好的答案?
        • 这只适用于他的测试数据,但我敢打赌它不会适用于真实数据!
        • @markus 因为它通过评论和自下而上排序,所以新的排在第一位。
        • 如果最后一条评论以 A 开头,第一条评论以 z 开头怎么办?
        • 但在现实世界中,您需要在该表中添加更多列,例如状态,以使其禁用和启用评论。日期时间字段等
        猜你喜欢
        • 2020-12-15
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 2011-10-26
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多