例如,我有一个像这样的表:
user ip
a 1.2.3.4
a 1.2.3.4
a 2.4.58.5
b 2.3.4.5
b 2.3.4.5
b 2.3.4.5
b 1.45.5.6
c 12.4.2.4
c 12.4.2.4
c 1.2.3.4
d 12.4.2.4
d 12.4.2.4
e 1.45.45.45
e 1.45.45.45
f 1.55.55.55
如您所见,用户a,c和d具有相同的ip记录。 如何从表格中选择此类用户?
我正在使用mysql。
答案 0 :(得分:8)
SELECT ip, GROUP_CONCAT(DISTINCT user) AS users
FROM my_table
GROUP BY ip
HAVING COUNT(DISTINCT user) > 1
在sqlfiddle上查看。
答案 1 :(得分:2)
虽然我喜欢eggyal的答案,但问题是“如何从桌子上选择这样的用户?”。所以,我将提供给用户的另一个答案:
select distinct user
from t
where exists (select 1 from t t2 where t2.ip = t.ip and t2.user <> t.user);
详细说明,如果你想要每个用户的ip列表:
select user, count(*) as numIs, group_concat(ip) as IPs
from t
where exists (select 1 from t t2 where t2.ip = t.ip and t2.user <> t.user)
group by user;