1. left join(左连接) 返回包括左表中的所有记录和右表中联结字段相等的记录
  2. right join(右连接) 返回包括右表中的所有记录和左表中联结字段相等的记录
  3. inner join(等值连接) 只返回两个表中联结字段相等的行

实例

  1. A表(Order)
    left join、right join和inner join区别

  2. B表(Customer)
    left join、right join和inner join区别

  3. select * from order as o left join customer as c on o.cust_id = c.cust_id

    运行结果
    left join、right join和inner join区别
    可以看出 left join(左连接) 返回了左表(这里是Order表)的所有记录,右表只返回了符合约束条件的记录(条件是o.cust_id = c.cust_id),然后右表字段不足的用null填充

  4. select * from order as o right join customer as c on o.cust_id = c.cust_id

    运行结果
    left join、right join和inner join区别
    可以看出right join(右连接)返回了右表(这里是Customer表)的所有记录,左表只返回了符合约束条件的记录(条件是o.cust_id = c.cust_id),然后左表字段不足的用null填充

  5. select * from order as o inner join customer as c on o.cust_id = c.cust_id

    运行结果
    left join、right join和inner join区别
    可以看出inner join(等值连接)只返回两者中满足约束条件的记录,多余的不会返回

ps

  1. 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面,where位于on后面

相关文章: