我有下表:
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'组成一个'组。但是这样我无法到达列出名称,只列出组的计数(*)(他们有多少成员)。
答案 0 :(得分:1)
如果要列出原始记录,请使用group by
和join
:
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;