以最佳方式加入两个表

时间:2017-03-20 19:59:00

标签: sql sql-server

我有一个名为users的表,其中包含idipemail列。我想知道有多少用户满足以下条件 - 从同一个ip登录的用户数为5到10。到目前为止,我有这个问题:

select count(distinct id) as countID,
    ip
from users
group by ip
having count(distinct id) between 5 and 10

我希望获得以下列:idemailcountID。我正在考虑使用上层查询创建一个临时表,之后使用users作为键将ip表连接起来,但这需要花费太多时间,因为我有大约300万行。谁能想到更好的解决方案?

1 个答案:

答案 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;