
这篇文章完全来自于CoolSell.cn,我只是在他的基础上做了些 MySql 的语法翻译。把模模糊糊的 join 做一个总结
0、数据准备 tableA tableB
id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
1、取交集
Select * FROM tableA
JOIN tableB
ON tableA.name = tableB.name


2、取左全集,没有匹配的用 null 代替
SELECT * FROM tableA
left JOIN tableB
on tableA.name=tableB.name


3、取右全集,没有匹配的用 null 代替
Select * FROM tableA
RIGHT JOIN tableB
ON tableA.name = tableB.name

4、取并集,由于 mysql 没有 full join 只有使用 UNION
SELECT * FROM tableA
RIGHT JOIN tableB
on tableA.name=tableB.name
UNION
SELECT * FROM tableA
LEFT JOIN tableB
on tableA.name=tableB.name


5、取不交叉的数据
SELECT * FROM tableA
RIGHT JOIN tableB
ON tableA.name=tableB.name
WHERE tableA.id IS NULL
UNION
SELECT * FROM tableA
LEFT JOIN tableB
ON tableA.name=tableB.name
WHERE tableB.id IS NULL


6、笛卡尔积,笛卡尔乘积会产生 4 x 4 = 16 条
SELECT * FROM tableA JOIN tableB
网友评论