我有一个简单的表,可以在用户登录时保留所有数据。
id
| user_id
| ip
| date
如您所知,我有来自多个IP的用户和从一个IP登录的用户。
我想从一个IP获取那些日志。所以我需要GROUP BY ip
,但也需要具有此IP数据的UNIQUE user_id
计数。我想通过从同一IP登录的大多数用户订购它。
问题是ip和user_id都是GROUP BY组。我想我需要insite查询,但我不知道该怎么做。
SELECT *, COUNT(`id`)
FROM `TABLE`
GROUP BY `ip`, `user_id`
ORDER BY COUNT(`id`)
有什么想法吗? :)
答案 0 :(得分:2)
您正在寻找the DISTINCT
keyword:
SELECT IP, COUNT(DISTINCT user_ID) AS NumberOfUsers
FROM TABLE
GROUP BY IP
HAVING COUNT(DISTINCT user_ID) > 1 -- this will filter to show only IPs with multiple users
ORDER BY NumberOfUsers DESC
答案 1 :(得分:0)
我认为这就是你要找的东西:
SELECT user_id, COUNT(DISTINCT ip) as unique_ip_count
FROM TABLE
GROUP BY user_id
HAVING COUNT(DISTINCT ip)=1