【问题标题】:records showing in reverse order in mysql在mysql中以相反顺序显示的记录
【发布时间】:2019-12-24 23:05:06
【问题描述】:

示例数据如下。

我正在写下面的查询来获取最近的 10 条记录。

SELECT * FROM `tblmessages` order by message_id desc limit 10

问题在于它以相反的顺序给出结果。

我的预期结果集是从消息 id = 15 到消息 id = 24。

但是,我目前正在从消息 id = 24 到消息 id = 15。我的意思是,它以相反的顺序显示。能不能给点建议?

这里是 Laravel 雄辩的查询。

ThreadMessagesModel::where("thread_id", $thread_id)
                   ->orderBy("message_id", "desc")
                   ->paginate(10);

【问题讨论】:

  • select * from (SELECT * FROM tblmessages order by message_id desc limit 10) order by message_id asc
  • 我的预期结果集是从消息 id = 15 到消息 id = 24。但是,我目前正在从消息 id = 24 到消息 id = 15。我的意思是,它显示在相反的顺序。你能提出一些建议吗?我不明白。

标签: mysql laravel laravel-5.7 laravel-5.8


【解决方案1】:

结果是反向显示的,因为顺序是descending。您可以使用以下查询来获取排序最高的 id ascding`

SELECT * FROM `tblmessages` 
WHERE message_id IN (
                        SELECT message_id 
                        FROM `tblmessages` 
                        order by message_id desc 
                        limit 10
                    )

【讨论】:

    【解决方案2】:

    我认为您应该运行以下查询。

    Select * from (
                    SELECT * FROM `tblmessages` order by message_id desc limit 10
                  ) as a 
    order by message_id
    

    【讨论】:

      【解决方案3】:
      SELECT *
      FROM (
             SELECT *
             FROM tblmessage 
             ORDER BY message_id DESC
             LIMIT 10
      ) main
      ORDER BY main.message_id;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多