MySQL - 使用GROUP BY和DESC

时间:2011-09-05 09:18:21

标签: mysql sql group-by sql-order-by

在我的SQL查询中,我选择的数据是 GROUP BY ORDER BY 子句。该表在多行中具有相同的numbers,每行具有不同的时间。所以我想我想应用 GROUP BY 子句。

然而,在结果中返回最早的时间和数字,但我需要最近的时间。

SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC

查询看起来好像应首先应用 GROUP BY 然后 ORDER BY ...但结果似乎不会以这种方式运行。

有什么方法可以解决这个问题吗?

5 个答案:

答案 0 :(得分:17)

SELECT * 
FROM table t
WHERE time = (
    SELECT max(time)
    FROM table
    WHERE t.numbers = numbers
)

答案 1 :(得分:15)

解决方法是将查询重写为:

SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;

答案 2 :(得分:1)

SELECT * FROM table
    WHERE time IN (
        SELECT MAX(time)
            FROM table
            GROUP BY numbers
    )

答案 3 :(得分:0)

根据手册,您可以按列表向组添加desc: 例如:
group by item1,item2 desc,item3

有或没有汇总。

我试过这个,它适用于Ubuntu版本5.5.58。参考页面是: https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html

答案 4 :(得分:-5)

SELECT * FROM TABLE GROUP BY numbers DESC;

这将为您提供小组的最后一条记录。

由于