gpt4 book ai didi

mysql - 如何在 LEFT JOIN 中约束右 watch ?

转载 作者:行者123 更新时间:2023-11-29 04:09:26 26 4
gpt4 key购买 nike

我有两个表:帖子和评论。一个帖子有很多评论。

我经常想检索所有帖子以及他们可能有的任何评论。我用左连接来做到这一点,如图所示:

select p.post_id, p.content_status, p.post_title, c.comment_id, 
c.content_status as comment_status
from post p
left join comment c on p.post_id = c.post

现在我想排除所有状态不是“已批准”的帖子或评论。我可以毫无问题地约束帖子表,并且仍然返回没有评论的帖子。不过,一旦我限制了评论表,我就不再检索没有评论的帖子。

这是有问题的查询:

select p.post_id, p.content_status, p.post_title, c.comment_id, 
c.content_status as comment_status
from post p
left join comment c on p.post_id = c.post
where p.content_status = 'Approved' and c.content_status = 'Approved'

最佳答案

只需将右侧表格中的条件移动到ON 子句中。

WHERE 子句中的任何条件都将完全删除行,而 ON 子句中的条件将 - 如您所愿 - 不会删除行而只是阻止匹配。

SELECT p.post_id, p.content_status, p.post_title, c.comment_id, 
c.content_status AS comment_status
FROM post p
LEFT JOIN comment c
ON p.post_id = c.post AND c.content_status = 'Approved'
WHERE p.content_status = 'Approved'

An SQLfiddle, courtesy of @hims056 .

关于mysql - 如何在 LEFT JOIN 中约束右 watch ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747056/

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