我的MYSQL基础中有3个表,我必须比较每个第一个表(表1和表2)中每个user_ID的时间
这是我的表1:
user_ID
这是我的表2:
user_ID
这是我的表3(user_ID和昵称之间的链接):
user_ID //昵称
我想得到这样的结果:
昵称//从表1中计算出现次数//从表2中计算出现次数
我没有成功立即从每个表中分别计算,我得到了每个昵称的全局结果:( 你能帮我找到合适的MYSQL请求吗? - ......
答案 0 :(得分:0)
这种类型的查询有点棘手,因为某些名称可能不在第一个表中,而其他名称可能不在第二个表中。要真正解决此类问题,您需要预先聚合每个查询的结果。要获取所有名称,您需要left outer join
:
select t3.name, coalesce(cnt1, 0) as cnt1, coalesce(cnt2, 0) as cnt2
from table3 t3 left outer join
(select name, count(*) as cnt1
from table1
group by name
) t1n
on t3.name = t1n.name left outer join
(select name, count(*) as cnt2
from table2
group by name
) t2n
on t3.name = t1n.name;