-3

假设我有以下记录:

Foo
FOO

我想获取所有记录的列表,以便它们按包含fooand的列分组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。

4

1 回答 1

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以及计数。使用该结果连接回您的表,您应该得到正确的最终结果。

于 2013-03-21T20:21:34.587 回答