@TOC
在实际的数据库应用中,我们经常需要从多个数据表中读取数据,这时我们就可以使用SQL语句中的连接(JOIN),在两个或多个数据表中查询数据。
本文介绍一下以下七种JOIN用法:
INNER JOIN(内连接)
- 如果表中有至少一个匹配,则返回行。
- INNER JOIN与JOIN是相同的。
SELECT *
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
LEFT JOIN(左连接)
- 即使右表中没有匹配,也从左表返回所有的行。
SELECT *
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
RIGHT JOIN(右连接)
- 即使左表中没有匹配,也从右表返回所有的行。
SELECT *
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
FULL OUTER JOIN(外连接)
- 只要其中一个表中存在匹配,则返回行。
- 在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
SELECT *
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
LEFT EXCLUDING JOIN INNER JOIN(左连接排除内连接结果)
SELECT *
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
RIGHT EXCLUDING JOIN INNER JOIN(右连接排除内连接结果)
SELECT *
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL
OUTER EXCLUDING JOIN INNER JOIN(外连接排除内连接结果)
SELECT *
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL