(INNER) JOIN:返回两个表中具有匹配值的记录。
LEFT (OUTER) JOIN:从左表返回所有记录,从右表返回匹配的记录。
RIGHT (OUTER) JOIN:从右表返回所有记录,从左表返回匹配的记录。
FULL (OUTER) JOIN:当左表或右表匹配时返回所有记录
例如,假设我们有两个包含以下记录的表:
表 A
id firstname lastname
___________________________
1 Ram Thapa
2 sam Koirala
3 abc xyz
6 sruthy abc
表 B
id2 place
_____________
1 Nepal
2 USA
3 Lumbini
5 Kathmandu
内部联接
注意:它给出了两个表的交集。
句法
SELECT column_name FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
将其应用到您的示例表中:
SELECT TableA.firstName,TableA.lastName,TableB.Place FROM TableA INNER JOIN TableB ON TableA.id = TableB.id2;
结果将是:
firstName lastName Place
_____________________________________
Ram Thapa Nepal
sam Koirala USA
abc xyz Lumbini
左连接
注意:将给出 TableA 中的所有选定行,以及 TableB 中任何常见的选定行。
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;
将其应用到您的示例表中
SELECT TableA.firstName,TableA.lastName,TableB.Place FROM TableA LEFT JOIN TableB ON TableA.id = TableB.id2;
结果将是:
firstName lastName Place
______________________________
Ram Thapa Nepal
sam Koirala USA
abc xyz Lumbini
sruthy abc Null
右连接
注意:将给出 TableB 中所有选定的行,以及 TableA 中任何常见的选定行。
句法:
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
将其应用到您的 samole 表中:
SELECT TableA.firstName,TableA.lastName,TableB.Place FROM TableA RIGHT JOIN TableB ON TableA.id = TableB.id2;
结果将 bw:
firstName lastName Place
______________________________
Ram Thapa Nepal
sam Koirala USA
abc xyz Lumbini
Null Null Kathmandu
完全加入
注意:它与联合操作相同,它将从两个表中返回所有选定的值。
句法:
SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;
将其应用于您的示例 [le 表:
SELECT TableA.firstName,TableA.lastName,TableB.Place FROM TableA FULL JOIN TableB ON TableA.id = TableB.id2;
结果将是:
firstName lastName Place
______________________________
Ram Thapa Nepal
sam Koirala USA
abc xyz Lumbini
sruthy abc Null
Null Null Kathmandu
一些事实
对于 INNER 加入,顺序无关紧要
对于(LEFT、RIGHT 或 FULL)OUTER 连接,顺序很重要
在w3schools找到更多信息