【问题标题】:MySQL GROUP BY and DescendingMySQL GROUP BY 和降序
【发布时间】:2026-01-04 12:45:01
【问题描述】:

一段时间以来,我一直在尝试从 MySQL 数据库中收集一些数据。

问题是我想按objectid 对数据进行分组,同时只获取最新数据(降序)。

每次我尝试它时,我都会得到一个错误,或者它没有下降。

我现在的查询是:

SELECT * FROM 'table' GROUP BY 'objectid' DESC

我尝试按idtimestamp 排序,但结果是升序。

我的问题类似于:http://*.com/questions/7306082/mysql-using-group-by-and-desc

但是那里提供的答案并没有解决我的问题。

提前致谢!

【问题讨论】:

    标签: mysql group-by


    【解决方案1】:

    您还必须指定ORDER BY 子句进行排序:

    SELECT * FROM 'table' GROUP BY 'objectid' ORDER BY timestamp DESC
    

    【讨论】:

    • 正如我在问题中所说,ORDER BY 也输出升序结果。
    【解决方案2】:

    您的查询是错误的,您应该使用backticks 而不是single quotes 你错过了按声明订购的订单

    试试这个

         SELECT * FROM `table` GROUP BY `objectid` Order by id DESC
    

    【讨论】:

    • 我只使用了单引号,因为 backticks 在 * 上用于不同的目的 ;)
    【解决方案3】:

    这将为您提供每个 ObjectId 的最新条目,按时间降序排列;它只是简单地离开连接来查找不存在相同 ObjectId 的新条目的所有条目

    SELECT a.* 
    FROM table1 a
    LEFT JOIN table1 b
      ON a.ObjectId=b.ObjectId 
     AND a.time < b.time
    WHERE b.ObjectId IS NULL
    ORDER BY time DESC
    

    An SQLfiddle to test with.

    【讨论】: