- left join(左连接) 返回包括左表中的所有记录和右表中联结字段相等的记录
- right join(右连接) 返回包括右表中的所有记录和左表中联结字段相等的记录
- inner join(等值连接) 只返回两个表中联结字段相等的行
实例
-
A表(Order)
-
B表(Customer)
-
select * from order as o left join customer as c on o.cust_id = c.cust_id
运行结果
可以看出 left join(左连接) 返回了左表(这里是Order表)的所有记录,右表只返回了符合约束条件的记录(条件是o.cust_id = c.cust_id
),然后右表字段不足的用null
填充 -
select * from order as o right join customer as c on o.cust_id = c.cust_id
运行结果
可以看出right join(右连接)返回了右表(这里是Customer表)的所有记录,左表只返回了符合约束条件的记录(条件是o.cust_id = c.cust_id
),然后左表字段不足的用null
填充 -
select * from order as o inner join customer as c on o.cust_id = c.cust_id
运行结果
可以看出inner join(等值连接)只返回两者中满足约束条件的记录,多余的不会返回
ps
- 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面,where位于on后面