MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)

下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第1张图片

Inner JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第2张图片

SELECT  
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

Left JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第3张图片

SELECT 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

如果B有条重复记录,A就会增加多条,因此要用如下方法解决:

SELECT 
FROM Table_A A
LEFT JOIN (SELECT FROM Table_B GROUP B.key) B
ON A.Key = B.Key

 

Right JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第4张图片

SELECT 
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

Outer JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第5张图片

SELECT 
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

Left Excluding JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第6张图片

SELECT  
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

Right Excluding JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第7张图片

SELECT 
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

Outer Excluding JOIN

MS SQL的 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法(用LEFT JOIN 解决另一表有多条重复记录方法)_第8张图片

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

你可能感兴趣的:(SQL)