sql连接查询的连接查询分为交叉连接、内连接、外连接。
以下面两张表为例演示连接查询。
a表
b表
- 外连接
分为左连接、右连接、完全外连接
左连接:left join 或left outer join
SELECT * FROM a LEFT OUTER JOIN b ON a.aid=b.bid
返回结果
返回a表所有行,根据on的条件返回b表,如果没有匹配,b表返回null
右连接:right join 或right outer join
SELECT * FROM a RIGHT OUTER JOIN b ON a.aid=b.bid
返回结果
返回b表所有行,根据on的条件返回a表,如果没有匹配,a表返回null
完全外连接:full join 或full outer join
SELECT * FROM a FULL JOIN b ON a.aid=b.bid
返回结果
返回a、b表的所有行,等价于
SELECT * FROM a LEFT JOIN b ON a.aid=b.bid
UNION
SELECT * FROM a RIGHT JOIN b ON a.aid=b.bid
- 内连接join或inner join
SELECT * FROM a INNER JOIN b ON a.aid=b.bid
返回结果
返回符合条件的a、b表所有行,没有null情况
等价于
SELECT * FROM a,b WHERE a.aid=b.bid
或
SELECT * FROM a CROSS JOIN b WHERE a.aid=b.bid
- 交叉连接cross join
返回a表和b表的笛卡尔积
SELECT * FROM a CROSS JOIN b
返回结果
等价于
SELECT * FROM a,b