gpt4 book ai didi

MySQL Left Join + Where问题

转载 作者:可可西里 更新时间:2023-11-01 07:17:10 24 4
gpt4 key购买 nike

我有一张用户表:id、type、name

和一个文章表:id、writer_id、status

其中 articles.writer_id = users.id。

我想显示一个表格,其中包含每个用户的姓名 WHERE type = 'writer' 以及与他们关联且状态 = '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

问题是,这不会显示与他们相关联的“已分配”状态文章为 0 的作者。我很确定我需要一个子查询,但我不确定该怎么做。提前致谢!

最佳答案

由于您使用的是 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

说明:对于那些没有文章的用户,a.status 将为 NULL,将谓词留在 WHERE 中会破坏 LEFT 连接的目的,因为NULL = 'assigned' 的计算结果为 false。

关于MySQL Left Join + Where问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com