【发布时间】:2020-09-03 15:10:11
【问题描述】:
我是 MySQL 新手,在设置 MySQL 查询以以特定输出格式从几个表(约 100,000 行)中提取一些数据时,我需要一些帮助。
本题涉及三个SQL表:
allusers : 这个包含用户信息。感兴趣的列是userid 和vip
table1 和 table2 包含数据,但它们也有一个 userid 列,与 allusers 中的 userid 列匹配。
我想做的事:
我想创建一个查询,它搜索allusers,找到VIP 的userid,然后计算table1 和table2 中的记录数,按@ 分组987654335@。所以,我想要的输出是:
userid | Count in Table1 | Count in Table2
1 | 5 | 21
5 | 16 | 31
8 | 21 | 12
到目前为止我做了什么:
我已经创建了这个声明:
SELECT userid, count(1)
FROM table1
WHERE userid IN (SELECT userid FROM allusers WHERE vip IS NOT NULL)
GROUP BY userid
这让我接近我想要的。但现在,我想添加另一列,分别来自table2
我也尝试过使用这样的连接:
select A.userid, count(T1.userid), count(T2.userid) from allusers A
left join table1 T1 on T1.userid = A.userid
left join table2 T2 on T2.userid = A.userid
where A.vip is not null
group by A.userid
但是,这个查询花费了很长时间,我不得不终止查询。我假设这是因为对如此大的表使用联接效率非常低。
类似问题
This one sums up the counts across tables, while I need the counts separated into columns
有人可以帮我设置查询以生成我需要的数据吗?
谢谢!
【问题讨论】:
标签: mysql sql group-by count left-join