(内部)联接:返回两个表中具有匹配值的记录。
左(外)联接:从左表返回所有记录,并从右表返回匹配的记录。
右(外)联接:从右表返回所有记录,并从左表返回匹配的记录。
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;
将其应用到您的样品表中:
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查找更多
RIGHT JOIN
只要用Just就能达到任何期望的结果LEFT JOIN
呢?:P