我有一个名为users
的表,其中包含id
,ip
和email
列。我想知道有多少用户满足以下条件 - 从同一个ip登录的用户数为5到10。到目前为止,我有这个问题:
select count(distinct id) as countID,
ip
from users
group by ip
having count(distinct id) between 5 and 10
我希望获得以下列:id
,email
和countID
。我正在考虑使用上层查询创建一个临时表,之后使用users
作为键将ip
表连接起来,但这需要花费太多时间,因为我有大约300万行。谁能想到更好的解决方案?
答案 0 :(得分:2)
我认为通过加入ip上的原始表格,您可以获得所需的详细信息。
select u.*,
u2.countID
from users u
join (
select count(distinct id) as countID,
ip
from users
group by ip
having count(distinct id) between 5 and 10
) u2 on u.ip = u2.ip;