Sql 以最佳方式连接两个表

Sql 以最佳方式连接两个表,sql,sql-server,Sql,Sql Server,我有一个名为users的表,其中包含id、ip和email列。我想知道有多少用户满足以下标准-5到10个用户从同一ip登录。到目前为止,我有一个疑问: select count(distinct id) as countID, ip from users group by ip having count(distinct id) between 5 and 10 我希望得到以下列-id,email和countID。我想用上面的查询创建一个temp表,然后使用ip作为键将其与users表

我有一个名为
users
的表,其中包含
id
ip
email
列。我想知道有多少用户满足以下标准-5到10个用户从同一ip登录。到目前为止,我有一个疑问:

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

我希望得到以下列-
id
email
countID
。我想用上面的查询创建一个temp表,然后使用
ip
作为键将其与
users
表连接起来,但这需要花费太多时间,因为我有大约300万行。有谁能想出更好的解决方案吗?

我认为通过加入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;

你刚才不是问这个吗?向我们展示样本数据和预期输出?因为如果有10个用户使用相同的ip登录,你就有10封电子邮件。@JuanCarlosOropeza从前面的回答中,我只得到了countID和ip。我实际需要的是id、电子邮件和UNTID,按顺序排列。你的第二张桌子是什么?我在这个问题上只看到一个。今天似乎不止一个人在上同一门课,并且得到了同样的作业问题@SeanLange或他们一起做作业:P,但我从来没有收到过300万行的作业