我想快速了解一下 MySQL 连接的类型。我知道这些,其余的我不确定它们的意思。
- 逗号分隔(什么exactly这是缩写吗?):
SELECT * FROM a, b WHERE b.id = a.beeId AND ...
- 显示来自 a 的信息,即使 b 中没有匹配项:
SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...
我见过其他连接,但想知道它们有何不同,是什么INNER
/OUTER
,是否添加LEFT
改变事情。
我已经知道联接是如何工作的,我只是想知道是否还有其他类型的联接,或者它们是否只是获得相同结果的不同方式。
根据您的评论,最好在以下位置找到每个的简单定义W3学校 http://www.w3schools.com/sql每种类型的第一行给出了连接类型的简要说明
- JOIN:当两个表中至少有一个匹配项时返回行
- LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项
- RIGHT JOIN:返回右表中的所有行,即使左表中没有匹配项
- FULL JOIN:当其中一个表中有匹配项时返回行
END EDIT
简而言之,您给出的逗号分隔示例
SELECT * FROM a, b WHERE b.id = a.beeId AND ...
从表 a 和 b 中选择每条记录,并用逗号分隔表,这也可以在像这样的列中使用
SELECT a.beeName,b.* FROM a, b WHERE b.id = a.beeId AND ...
然后,它会获取示例中 b.id 列和 a.beeId 列匹配的行中的指示信息。
因此,在您的示例中,它将从表 a 和 b 中获取所有信息,其中 b.id 等于 a.beeId。
在我的示例中,当 b.id 等于 a.beeId 时,它将获取 b 表中的所有信息,并且仅获取 a.beeName 列中的信息。
请注意,还有一个 AND 子句,这将有助于优化您的结果。
有关 mySQL 连接和左连接的一些简单教程和解释,请查看 Tizag 的 mySQL 教程。您还可以查看基思·J·布朗的网站 http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.php有关连接的更多信息也非常好。
我希望这可以帮助你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)