SQL join 用于把来自两个或多个表的行结合起来(多表查询)。
两张表数据如下
- tableA
id | name |
---|---|
1 | a |
2 | b |
3 | c |
4 | d |
- tableB
id | name |
---|---|
1 | m |
2 | n |
3 | a |
4 | h |
5 | k |
-
inner join
INNER JOIN 关键字在表中存在至少一个匹配时返回行。INNER JOIN 与 JOIN 是相同的。
SELECT * FROM TableA INNER JOIN TableB ON TableA. NAME = TableB. NAME
查询结果为:
id name id1 name1 1 a 3 a inner join
的查询结果表示的是符合查询条件的两表的交集
-
left outer join
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA. NAME = TableB. NAME
查询结果
id name id1 name1 1 a 3 a 2 b null null 3 c null null 4 d null null left outer join
的查询结果表示的是a表的全集和b中符合条件的值,没有匹配到的内容用null填充
-
right outer join
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA. NAME = TableB. NAME
查询结果:
id name id1 name1 1 a 3 a null null 1 m null null 2 n null null 4 h null null 5 k right outer join
的查询结果表示的是b表的全集和a中符合条件的值,没有匹配到的内容用null填充