Compound Join Conditions
部分表中可能缺乏唯一识别的单独一列,例如以往学习的表中的顾客id
对于这类表,可以存在两列值共同组成一个唯一识别的值,即复合主键
今天学习如何将存在复合主键的表格和其它表格进行连接
具体案例:连接order_item_notes和order_item
USE sql_store;
SELECT *
FROM order_items oi
JOIN order_item_notes oin
ON oi.order_id = oin.order_id
AND oi.product_id = oin.product_id
Implicit Join Syntax
先看下方内连接
SELECT *
FROM orders o
JOIN customers c
ON o.customer_id = c.customer_id
现在用隐式链接
SELECT *
FROM orders o, customers c
WHERE o.customer_id = c.customer_id
但是并不建议使用改隐式连接,因为一旦忘记WHERE子句,会得到交叉连接
演示如下:
SELECT *
FROM orders o, customers c
会得到非常多的返回数据
为什么呢?
因为订单表里的每条记录都和顾客表里的每条记录连接了,即交叉
这个之后会学习
总之,尽可能选择使用显性连接,因为显性连接会要求书写条件,也能够提供报错