我有一张充满IP地址,成员ID和设备ID的表。我想查找多个成员使用相同IP地址的帐户。但是,由于该表还记录了设备ID,所以我不能只搜索重复的IP条目。
表示例
device_key member_id ip_address
123452345 1 127.0.0.1
2687924 1 127.0.0.1
3983456 23 255.255.255.255
4659824 876 255.255.255.255
54653787 90 1.1.1.1
我已经尝试过了:
SELECT
member_id,
ip_address,
COUNT(ip_address)
FROM
table
GROUP BY ip_address
HAVING COUNT(ip_address) > 1
以上代码将同时输出127.0.0.1
和255.255.255.255
。但是,我只对255.255.255.255
感兴趣,因为这个IP被多个人使用。我无法找出正确的代码来仅输出此代码。
答案 0 :(得分:2)
SELECT ip_address, COUNT(DISTINCT member_id)
FROM table
GROUP BY ip_address
HAVING COUNT(DISTINCT member_id) > 1;
如果要获取使用这些IP地址的实际成员ID,可以执行以下操作:
SELECT ip_address, member_id
FROM table
WHERE ip_address IN (SELECT ip_address
FROM table
GROUP BY ip_address
HAVING COUNT(DISTINCT member_id) > 1)
ORDER BY ip_address, member_id;
答案 1 :(得分:1)
您可以这样做:
select ip_address
from (
select distinct ip_address, member_id from t
) x
group by ip_address
having count(*) > 1