说我有以下记录:
Foo
FOO
我想获取所有记录的列表,以便按照包含foo
和FOO
的列对它们进行分组,但我希望显示最后一条记录而不是第一条记录。 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。
答案 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
如果您只想要与每个name
相关联的最后一行并且id
是顺序的,那么您可以使用子查询为每个max(id)
获取name
与计数。使用该结果连接回您的表,您应该得到正确的最终结果。