[英]LEFT JOIN with a condition
我需要加入两个表。 我只想显示其中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
我想做的是排除第一行ID100。(所以我想那实际上不是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
您当前方法的问题在于,联接将私人用户视为不存在,而不是说“此人存在,因此我应从结果中排除此行”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.