我将讨论从两个关系表中返回数据的七种不同方法。我将排除交叉连接和自引用连接
【一】INNER JOIN(内联)
这是最简单,最容易理解的Join,也是最常见的。此查询将返回左表(表A)中右表(表B)中具有匹配记录的所有记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A INNER JOIN Table_B B ON A.KEY = B.KEY
【二】LEFT JOIN(左联)
无论这些记录中的任何记录是否与右表(表B)匹配,此查询都将返回左表(表A)中的所有记录。它还将返回右表中的任何匹配记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A LEFT JOIN Table_B B ON A.KEY = B.KEY
【三】RIGHT JOIN(右联)
无论这些记录中的任何记录是否与左表(表A)匹配,此查询将返回右表(表B)中的所有记录。它还将返回左表中的任何匹配记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A RIGHT JOIN Table_B B ON A.KEY = B.KEY
【四】OUTER JOIN(外联)
此加入也可以称为 FULL OUTER JOIN 或 FULL JOIN。此查询将返回两个表中的所有记录,连接左表(表A)中与右表(表B)中的记录匹配的记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A FULL OUTER JOIN Table_B B ON A.KEY = B.KEY
【五】LEFT JOIN EXCLUDING INNER JOIN(左连-内连)
此查询将返回左表(表A)中与右表(表B)中的任何记录都不匹配的所有记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A LEFT JOIN Table_B B ON A.KEY = B.KEY WHERE B.KEY IS NULL
【六】RIGHT JOIN EXCLUDING INNER JOIN(右连-内连)
此查询将返回右表(表B)中与左表(表A)中的任何记录都不匹配的所有记录。此Join的编写如下:
SELECT < select_list > FROM Table_A A RIGHT JOIN Table_B B ON A.KEY = B.KEY WHERE A.KEY IS NULL
【七】OUTER JOIN EXCLUDING INNER JOIN(外连-内连)
此查询将返回左表(表A)中的所有记录以及右表(表B)中不匹配的所有记录。我还没有需要使用这种类型的Join,但是所有其他的。此Join的编写如下:
SELECT < select_list > 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
登录后可发表评论