如何分组和正确排序

时间:2009-11-17 09:01:24

标签: mysql group-by

使用group by时,我在排序结果时遇到问题。它似乎显示数据库中的第一个条目,而不是组中的最新条目。

示例:

  

id(自动增量)|命名
  1 |安妮
  2 |詹姆斯
  3 |安妮
  4 |布拉德

正如你所看到的,我已经多次输入“anne”,这就是我使用该组的原因。然后我想它显示最近的“安妮”,这将是条目“3”。相反,它显示第一个“安妮”(1)

我的查询

  

“选择* FROM TABLE GROUP BY名称ORDER BY ID DESC

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

问题在于你选择了所有字段(使用*很少是一个好主意)所以每一行都是唯一的,因此没有任何内容可以分组。

尝试:

SELECT 
  Name,
  MAX(ID)
FROM
  TABLE
GROUP BY
  Name

答案 1 :(得分:2)

可能的解决方案:

SELECT id, name
FROM TABLE
WHERE id IN (SELECT MAX(id) FROM TABLE GROUP BY name)

答案 2 :(得分:0)

试试这个;它会起作用:

SELECT * FROM TABLE
  INNER JOIN (SELECT MAX(id) AS id
                FROM TABLE
                group by name)
    ids ON TABLE.id = ids.id 

答案 3 :(得分:0)

尝试

SELECT DISTINCT name
FROM table
ORDER BY id DESC

答案 4 :(得分:0)

在已经提供的另一个anwer的基础上,这个SQL将避免使用GROUP BY Name:

SELECT 
  DISTINCT Name,
  MAX(ID)
FROM
  TABLE