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万行的作业