id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
假设左边为表A的内容,右边为表B的内容。
1.普通的join (inner join)
取表A和表B的交集。
SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
3 Ninja 4 Ninja
2.左外连接(left_outer_join)
除了选择表A和表B的交集以外,表A中的其他元素也要选择——这时对应的表B中的元素为null
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
进而对于以上结果我们可以得到(A-B)即A与B的差集
SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
id name id name
-- ---- -- ----
2 Monkey null null
4 Spaghetti null null
3.全外连接(full_outer_join)
相当于表A和表B的并集,除了表A与表B的交集以外,其余部分不相交的部分结果中一定有一半为NULL
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader
本文详细介绍了SQL中的三种连接类型:内连接、左外连接及全外连接,并通过具体示例展示了每种连接如何操作两个表格的数据,帮助读者理解不同连接方式的应用场景。
690

被折叠的 条评论
为什么被折叠?



