大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」,希望您对编程的造诣更进一步.
首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下):
A)内连接:join,inner join
B)外连接:left join,left outer join,right join,right outer join,union
C)交叉连接:cross join
案例表:
t_users:
t_department:
第一种:内连接 inner join
内连接INNER JOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。
有INNER JOIN,WHERE(等值连接),STRAIGHT_JOIN,JOIN(省略INNER)四种写法。
select d.id, d.department, t.name from t_users t inner join t_department d on d.id = t.department_id
代码100分
结果说明;只去表A表和B表共同有的on 条件部分数据;
第二种:外连接 left join,left outer join ,right join, right outer join, union
1)左连接LEFT JOIN的含义就是求两个表A表和B表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表A表中剩余的记录(见最后三条)。
where b.id is null
代码100分select t.name, t.department_id, d.department from t_users t left join t_department d on d.id = t.department_id
2)右连接 RIGHT JOIN
同理右连接RIGHT JOIN就是求两个表A和B表的交集外加右表B剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录(见最后一条)
where a.id is null
select t.id userid,t.name, t.department_id, d.department from t_users t right join t_department d on d.id = t.department_id
3)外连接 FULL OUTER JOIN
外连接就是求两个表A和B集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做 UNION 操作来实现。
情景一:A和B的并集
代码100分select t.id userid,t.name, t.department_id, d.department from t_users t left join t_department d on d.id = t.department_id UNION select t.id userid,t.name, t.department_id, d.department from t_users t right join t_department d on d.id = t.department_id
情景二:A和B中不满足某个条件的记录
如:即不在A表user里面;也不在B表department里面的数据;条件 is null
select t.id userid,t.name, t.department_id, d.department from t_users t left join t_department d on d.id = t.department_id where d.id is null UNION select t.id userid,t.name, t.department_id, d.department from t_users t right join t_department d on d.id = t.department_id where t.department_id is null
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9825.html