我有这些桌子

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;

10-07 19:04
查看更多