【MySQL必知必会】第16章:高级联结
2018-04-09 本文已影响18人
100gle
除了内联结之外还有其他主要的两种联结方式,分别是:
- 自联结
- 外联结
16.1 自联结
自联结指的是:在查询数据时需要进行对自身连接,因此为了出现命名的二义性而为表定义别名后所进行连接:
SELECT p1.prod_id, p1.prod_name
FROM products AS p1, products AS p2
WHERE p1.vend_id = p2.vend_id
AND p2.prod_id = 'DTNTR';
- 这里对同一个表进行两次不同别名定义,从而对自身进行连接
16.2 外联结
外联结是指:包含了再相关表中没有关联的行的联结操作
一般而言,对A、B表的外联结主要有以下方式:
- 左联结:A LEFT OUTER JOIN B(根据左边的表来匹配,即A表有、B表有返回值,A表有、B表没有返回NULL)
- 右联结:A RIGHT OUTER JOIN B(根据右边的表来匹配,即B表有、A表有返回值,B表有、A表没有返回NULL)
SELECT customers.cust_id,
order.order_num
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = order.cust_id;
16.3 联结使用的注意事项
- 注意所使用的联结类型,不同类型的联结返回的结果不同
- 保证联结条件的正确性
- 虽然一个联结可以包含多个表,每个联结液可以采用不同的联结类型;但是在一起使用使最好先分别测试,使Debug会更加简单