gpt4 book ai didi

mysql - 带条件的 LEFT JOIN

转载 作者:行者123 更新时间:2023-11-29 13:54:54 24 4
gpt4 key购买 nike

我需要连接两个表。我只想显示 users.private = 0

的匹配项
feeds
id user_id
100 1
101 NULL
102 2

users
id private
1 1
2 0

我看过很多相关问题,答案总是将WHERE条件移至ON。但如果我这样做:

SELECT `feeds`.`id`, `feeds`.`user_id` AS `feed_user_id`, `users`.`id` AS `user_id`,  `users`.`private` 
FROM `feeds`
LEFT JOIN `users` ON `feeds`.`user_id` = `users`.`id`
AND `users`.`private` = 0

这会返回

id     feed_user_id  user_id  private
100 1 NULL NULL
101 NULL NULL NULL
102 2 2 0

我想要它做的是排除第一行 id 100。(所以我猜这不是真正的 LEFT JOIN -> 如果满足条件,我希望它 LEFT JOIN,否则排除)我该怎么做?

最佳答案

您需要两个单独的条件子句,一个在 JOIN 上,一个在 SELECT 上,如下所示:

SELECT `feeds`.`id`, `feeds`.`user_id` AS `feed_user_id`, `users`.`id` AS `user_id`,  `users`.`private` 
FROM `feeds`
LEFT JOIN `users` ON `feeds`.`user_id` = `users`.`id`
WHERE `users`.`private` = 0 OR `feeds`.`user_id' IS NULL

您当前方法的问题在于,联接将私有(private)用户视为不存在,而不是说“此人存在,我应该从结果中排除此行”。

关于mysql - 带条件的 LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020470/

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