假设我有以下记录:
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
如果 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
相关联的最后一行是顺序的,那么您可以使用子查询来获取每个name
的max(id)
以及计数。使用该结果连接回您的表,您应该得到正确的最终结果。