gpt4 book ai didi

mysql - 选择一个表中的所有项目并与另一个表连接,允许空值

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

我需要从表 birds(基本上是所有鸟)中选择所有值,然后加入另一个表,该表跟踪谁喜欢那只鸟。

所以我希望查询返回所有的鸟,以及人们喜欢那只鸟的记录的 ID。如果没有任何人喜欢这只鸟的记录,那么该字段应该为空。

我当前的查询没有得到空值。在这里:

select  bird_name, member_id 
from birds
right join bird_likes on birds.bird_id = bird_likes.bird_id
where member_id = 2 ;

我该怎么做才能确保 birds 表中的每一行都显示一次?

最佳答案

您必须使用left join 而不是right join

不同的连接

inner join : 只保留两个表中都有数据的行

left join : 保留左表的所有行并从右表添加可能的行

right join : 保留右表的所有行并从左表添加可能的行

左表始终是我们已有的表,右表是我们要加入的表。

作为记录,还有一个cross join,它将左表中的每一行与右表中的每一行连接起来,但是这个并不经常使用。

我希望这一切现在对你来说更清楚了:)

更正查询

select  bird_name, member_id 
from birds
left join bird_likes on birds.bird_id = bird_likes.bird_id
where member_id = 2;

请注意,这假定列 member_id 在 bird 表中,否则您可以保持这样的条件:

select  bird_name, member_id 
from birds
left join bird_likes on
birds.bird_id = bird_likes.bird_id and
bird_likes.member_id = 2;

关于mysql - 选择一个表中的所有项目并与另一个表连接,允许空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265350/

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