我有这些桌子
article_type
id type
1 article
2 free
3 review
user_fav
uid article_type_id
1 1
1 2
2 1
3 2
3 3
4 1
4 2
4 3
如果用户未添加类型,则需要使用文章类型支持用户,然后显示0
预期的结果
对于uid = 1
article_type_id count
1 1
2 1
3 0
------------------------------
对于uid = 2
article_type_id count
1 1
2 0
3 0
------------------------------
对于uid = 3
article_type_id count
1 0
2 1
3 1
------------------------------
对于uid = 4
article_type_id count
1 1
2 1
3 1
我尝试了以下查询来获得预期的结果。
查询:
select article_type_id, count (article_type_id)
from article_types
left join user_fav on user_fav.article_type_id = article_type.id
where uid = 1
最佳答案
当条件位于left join
的第二个表中时,则需要将其包括在on
子句中。另外,您的查询需要group by
:
您想要的查询是:
select a.article_type_id, count(*)
from article_types a left join
user_fav u
on u.article_type_id = a.id and u.uid = 1
group by a.article_type_id;