mysql如何知道左右哪个表
Posted
技术标签:
【中文标题】mysql如何知道左右哪个表【英文标题】:How do I know which table is left and right mysql 【发布时间】:2015-07-08 20:39:58 【问题描述】:我知道查询的第一个选择是左表,但我仍然对何时使用右连接和左连接感到困惑:
例如:
select chann.name from investments inv
right join channels chann on chann.id = inv.channel_id;
select chann.name from channels chann
left join investments inv on chann.id = inv.channel_id;
它们都返回相同的结果,为什么在第一个查询中使用右,为什么在第二个查询中使用左,这与外键有关吗?
谢谢
【问题讨论】:
你尝试过什么吗? ***.com/questions/3308122/…***.com/questions/5706437/… A 左连接 B 与 B 右连接 A 相同。但人类通常发现很难理解右连接。这就是为什么大多数人只使用左连接。 这可能有助于您了解 SQL 连接的区别:codeproject.com/Articles/33052/… 【参考方案1】:在您的示例中,两个查询都是相同的,因为当从右向左更改时,您也会更改表格顺序。为了简单理解这一点,请考虑以下示例:
SELECT A.* FROM Table1 A LEFT JOIN Table2 B on A.key=B.Key
在这种情况下,LEFT JOIN 表示 Table1 中的所有记录,因为是左侧的表。如果使用正确,则表示表 2 中的所有记录
【讨论】:
“在左边”是什么意思?您的意思是连接语句“LEFT JOIN”的左侧吗?左右位置与什么有关? @fraxture 当您使用FROM TableA
时,您的起点位于左侧,之后出现的任何其他连接表位于右侧...【参考方案2】:
LEFT JOIN:返回左表的所有行,以及匹配的行 从右表 RIGHT JOIN:返回右表的所有行, 以及左表中匹配的行
这意味着左连接将从您的第一个表中获取所有记录,并仅将它们与右表中符合您的 ON 条件的记录连接起来 右连接会做相反的事情(从第二个表中取出所有数据,并只加入第一个表上符合 ON 条件的记录)
【讨论】:
以上是关于mysql如何知道左右哪个表的主要内容,如果未能解决你的问题,请参考以下文章