SQL列表组中的名称

时间:2015-03-01 15:03:34

标签: sql

我有下表:

Name num1 num2 num3

A    1 2 3

B    1 2 3

C    2 2 3

D    2 5 3

我想收集tha(唯一)名称,当所有其他属性(num1,num2,num3)相同且该组中有多个名称时。

因此,对于这个例子,我希望得到像

这样的东西
A 1 2 3

B 1 2 3

我的想法是用num1,num2,num3'组成一个'组。但是这样我无法到达列出名称,只列出组的计数(*)(他们有多少成员)。

2 个答案:

答案 0 :(得分:1)

如果要列出原始记录,请使用group byjoin

select t.*
from table t join
     (select num1, num2, num3 
      from table t
      group by num1, num2, num3
      having count(*) > 1
     ) dups
     on t.num1 = dups.num1 and t.num2 = dups.num2 and t.num3 = dups.num3;

如果您只想获取名称列表,许多数据库都提供了连接字符串的功能。例如,在MySQL中你可以这样做:

select num1, num2, num3, group_concat(name) as names
from table t
group by num1, num2, num3
having count(*) > 1;

答案 1 :(得分:0)

SELECT *
FROM the_following_table t
WHERE EXISTS (
  SELECT *
  FROM the_following_table x
  WHERE x.num1 = t.num1 AND x.num2 = t.num2 and x.num3 = t.num3
  AND x.name <> t.name
  );

我应该解释一下吗?上面的查询说:&#34;给我以下表中的所有记录,其中存在另一条记录,num [123]的值完全相同,但名称不同&#34;