假设我们有这个查询:
SELECT t1.* from t1
LEFT JOIN t2
ON t2.t1id = t1.id;
当然,这是一个不好的例子,但我的观点是正确的;什么被认为是左侧?
t1
还是t2
?它是第一个选定的表还是on 子句中的第一个表或完全不同的东西?
由于Coding Horror ,我得到了不同的连接,但我在任何地方都找不到解释?
假设我们有这个查询:
SELECT t1.* from t1
LEFT JOIN t2
ON t2.t1id = t1.id;
当然,这是一个不好的例子,但我的观点是正确的;什么被认为是左侧?
t1
还是t2
?它是第一个选定的表还是on 子句中的第一个表或完全不同的东西?
由于Coding Horror ,我得到了不同的连接,但我在任何地方都找不到解释?
如果你写它会更明显;
SELECT t1.*
FROM t1 LEFT JOIN t2
ON t2.t1id = t1.id;
本质上,LEFT JOIN
表示包含最左边表中的每一行,最t1
右边表中的匹配行是可选的,并且RIGHT JOIN
表示始终包含最右边表t2
中的行,最左边表中匹配的行是可选的。
左侧是您要包含的部分,但不限于它是否不存在。
假设你有
TABLE1
ID
1
2
3
和
TABLE2
ID
2
3
4
SELECT *
FROM t1 LEFT JOIN
t2 ON t1.ID = t2.ID
会回来
t1.ID t2.ID
1 NULL
2 2
3 3
SELECT *
FROM t1 INNER JOIN
t2 ON t1.ID = t2.ID
会回来
t1.ID t2.ID
2 2
3 3
和
SELECT *
FROM t1 RIGHT JOIN
t2 ON t1.ID = t2.ID
会回来
t1.ID t2.ID
2 2
3 3
NULL 4
t2
是“左侧”。本质上,这表示“从等于或不存在的t1
地方选择所有记录。如果“左侧”条件不存在(即这是一个内部连接而不是外部(左)连接),则需要记录存在。t1.id
t2.t2id
t2.t1id
t2.t1id = t1.id