如果我愿意,我该怎么办?
目前,有表A和表B,
A:
id, name, address //the id is unique
B
id, contact, email
由于一个人可能有多个联系人和电子邮件,或者没有联系人和电子邮件(这意味着表B中没有记录)
现在我想计算每个id的记录数,甚至是0: 结果如下:
id, name, contact_email_total_count
我怎么能这样做(现在我唯一不知道的是如何计算0记录,因为表B中没有记录)?
答案 0 :(得分:2)
对于这种情况,您需要使用LEFT JOIN
,然后添加汇总和GROUP BY
:
select a.id,
a.name,
count(b.id) as contact_email_total_count
from tablea a
left join tableb b
on a.id = b.id
group by a.id, a.name
如果您需要帮助,请在此处学习联接语法,这是一个很棒的visual explanation of joins。
根据您的评论,典型的order of execution如下:
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- HAVING
- 选择
- ORDER BY
醇>
答案 1 :(得分:0)