Cha*_*les 4 mysql subquery left-join
我有一个用户表:id,type,name
和一个文章表:id,writer_id,status
articles.writer_id = users.id.
我想显示每个用户名称WHERE type ='writer'的表格,以及与status ='assigned'相关联的文章数量.
到目前为止,我有:
SELECT u.name, COUNT(a.id) as count
FROM users u LEFT OUTER JOIN articles a
ON a.writer_id = u.id
WHERE u.type = 'writer' AND a.status = 'assigned'
GROUP BY u.name
Run Code Online (Sandbox Code Playgroud)
问题是,这不会显示具有与之关联的0"已分配"状态文章的作者.我很确定我需要一个子查询,但我不知道该怎么做.提前致谢!
The*_*ter 10
由于您使用的是a LEFT JOIN,因此将a.status = 'assigned'谓词从WHERE子句移动到JOIN子句.
SELECT u.name, COUNT(a.id) as count
FROM users u LEFT OUTER JOIN articles a
ON a.writer_id = u.id
AND a.status = 'assigned'
WHERE u.type = 'writer'
GROUP BY u.name
Run Code Online (Sandbox Code Playgroud)
解释:对于那些没有文章的用户,a.status将NULLWHERE中的谓词保留为LEFT连接的目的,因为NULL = 'assigned'将评估为false.
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |