选择使用MySQL按列分组的唯一行

时间:2009-07-02 04:36:21

标签: mysql

我的表格如下:

ID |类型
01 |一个
02 | ç
03 | b
04 |一个
05 | b
06 |一个

我想输出按 Type 分组的最后添加条目的 ID 。 ID是一个自动增量字段,因此最后添加的条目显然是最高的数字。

SELECT * FROM `table` GROUP BY `Type` ORDER BY `ID` DESC, `Type` ASC

这会按 Type 对行进行分组,然后按 ID 进行排序,这样我就可以获得ID 1,2,3,而我想先排序THEN组以获得结果:6 ,5,2

3 个答案:

答案 0 :(得分:1)

如果您的MySQL版本允许子选择(和5.x确实),这应该有效:

SELECT * 
    FROM (SELECT * FROM `table` ORDER BY `id` DESC) AS tmp 
    GROUP BY `type` 
    ORDER BY `type` ASC;

答案 1 :(得分:1)

这可能就是你要找的......

SELECT   MAX(`ID`), `Type`
FROM     `table`
GROUP BY `Type`
ORDER BY `Type` ASC

读作为每组Type选择ID的最大值。

答案 2 :(得分:0)

这是一种没有子选择的经典方式:

SELECT t1.* FROM table t1
LEFT JOIN table t2
  ON (t2.type = t1.type AND t2.id > t1.id)
WHERE t2.id IS NULL

读为“在表格中选择行,使得没有其他具有相同类型的行具有更大的ID”。