Mysql (我的)SQL如何计算链式左/内联接?
我们提供了3个表格:Mysql (我的)SQL如何计算链式左/内联接?,mysql,sql,join,left-join,inner-join,Mysql,Sql,Join,Left Join,Inner Join,我们提供了3个表格: T1: T2: T3: id | t3_id id | name id | t2_id ---------- --------- ---------- 1 | 2 1 | abc 1 | 1 2 | NULL 2 | 123 2 | 1 3 | 1 3 |
T1: T2: T3:
id | t3_id id | name id | t2_id
---------- --------- ----------
1 | 2 1 | abc 1 | 1
2 | NULL 2 | 123 2 | 1
3 | 1 3 | ab1 3 | 3
4 | 4 4 | 32b 4 | 2
现在,我们测试了以下连接:
1.:
这一点很清楚。结果:
T1.id | T1.t3_id | T3.id | T3.t2_id | T2.id | T2.name
-----------------------------------------------------
1 | 2 | 2 | 1 | 1 | abc
3 | 1 | 1 | 1 | 1 | abc
4 | 4 | 4 | 2 | 2 | 123
2.:
这一点也很清楚:
T1.id | T1.t3_id | T3.id | T3.t2_id | T2.id | T2.name
-----------------------------------------------------
1 | 2 | 2 | 1 | 1 | abc
2 | NULL | NULL | NULL | NULL | NULL
3 | 1 | 1 | 1 | 1 | abc
4 | 4 | 4 | 2 | 2 | 123
三。:
这个有点奇怪。结果(与第一个结果相同):
我不明白MySQL是如何计算这个表达式的。为什么它忽略了左连接,而似乎更喜欢内部连接
如果I阅读此查询,则如下所示:
有人能给我解释一下这个场景吗?左连接类似于“或”,而内连接类似于“和”。所以有这样的先兆
t1 left join (t2 inner join t3)
这与我的想法没有什么不同
(t1 left join t2) inner join t2
内部联接
应用于您已有的结果(即T1左联接T3
),而不仅仅应用于T3
你读起来就像:
(T1 LEFT JOIN (T3 INNER JOIN T2))
((T1 LEFT JOIN T3) INNER JOIN T2)
但这就像:
t1 left join (t2 inner join t3)
(t1 left join t2) inner join t2
(T1 LEFT JOIN (T3 INNER JOIN T2))
((T1 LEFT JOIN T3) INNER JOIN T2)