GROUP BY,但我想看最后一项

时间:2013-03-21 20:00:05

标签: mysql sql

说我有以下记录:

Foo
FOO

我想获取所有记录的列表,以便按照包含fooFOO的列对它们进行分组,但我希望显示最后一条记录而不是第一条记录。 GROUP BY似乎显示第一条记录。

TABLE:

id, name

Records:
1, Foo
2, FOO

SQL:
SELECT *,
       COUNT(id) AS cnt
FROM   table_name
GROUP  BY name
HAVING cnt > 1 

结果是:Foo。我需要FOO。

1 个答案:

答案 0 :(得分:2)

如果 id列是顺序的,那么为什么不使用子查询来获得结果:

select t1.id,
  t1.name,
  t2.cnt
from yourtable t1
inner join
(
  SELECT max(id) id,
    COUNT(id) AS cnt
  FROM   yourtable
  GROUP  BY name
  HAVING cnt > 1
) t2
  on t1.id = t2.id

SQL Fiddle with Demo

如果您只想要与每个name相关联的最后一行并且id是顺序的,那么您可以使用子查询为每个max(id)获取name与计数。使用该结果连接回您的表,您应该得到正确的最终结果。