MySql Join 实例

All Join

这篇文章完全来自于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

你可能感兴趣的:(MySql Join 实例)