gpt4 book ai didi

MySQL 内部连接结果

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:07 28 4
gpt4 key购买 nike

我有一个关于 MySQl 中的内连接的问题。根据我对 MySQL 的有限理解,内连接生成的结果表仅包含两个表中都存在的行。也就是说,例如,如果 table1 包含 Joe 的一行和 Sally 的一行,而 table2 仅包含 Sally 的一行,则内部联接将仅包含一行:Sally 的行。

例如:

在包含 2 个表的数据库中,

表1(宠物)

petName petType
Unicorn Horse
Pegasus Horse
Lion Cat

表2(颜色)

petName petColor
Unicorn white
Unicorn silver
Fish Gold

使用查询

SELECT * FROM Pet,Color WHERE Pet.petName = Color.petName

为什么是查询的结果?

petName petType petName petColor
Unicorn Horse Unicorn white
Unicorn Horse Unicorn silver

为什么表1中只有1只“麒麟马”,而第二行却出现了“麒麟马”?我说 MySQL 与表 1 和表 2 中的术语“Unicorn”匹配,并列出两个表中包含“Unicorn”一词的行是否正确?然而,这样做会导致

petName petType petName petColor
Unicorn Horse Unicorn white
< NULL > Unicorn silver

MySQL 自动用表 1 中的“Unicorn Horse”行替换该值,因为它与查询中使用的“Unicorn”关键字匹配?

如果是这样,那么这样做有什么意义,因为 MySQL 只会在第二行中提供我没有用的冗余数据?另外,我可以通过使用来解决这个问题吗

SELECT * FROM Pet LEFT JOIN Color
ON Pet.petName=Color.petName
WHERE Pet.petName="Unicorn"?

我在 PHP & MYSQL for Dummies 中看到了这个例子,但似乎无法理解。如果有人能澄清这一点,我将不胜感激。

最佳答案

结果符合预期。您正在使用两个表上的 PetName 列连接两个表。 Unicorn HorsePet 在结果集中显示了两次,因为它与表 Color 上的两条记录匹配。

要进一步了解有关联接的更多信息,请访问以下链接:

关于MySQL 内部连接结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650737/

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