Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 首先先列举本篇用到的分类(内连接,外连接,…

Mysql 多表连接查询 inner join 和 outer join 的使用

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

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:

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

t_department:

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

第一种:内连接 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分

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

结果说明;只去表A表和B表共同有的on 条件部分数据;

第二种:外连接 left join,left outer join ,right join, right outer join, union

1)左连接LEFT JOIN的含义就是求两个表A表和B表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表A表中剩余的记录(见最后三条)。

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」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

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

 

2)右连接 RIGHT JOIN

同理右连接RIGHT JOIN就是求两个表A和B表的交集外加右表B剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录(见最后一条)

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

 

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」 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

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

 3)外连接 FULL OUTER JOIN

外连接就是求两个表A和B集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做 UNION 操作来实现。

情景一:A和B的并集

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

 

代码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

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

情景二:A和B中不满足某个条件的记录

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

如:即不在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

Mysql 多表连接查询 inner join 和 outer join 的使用「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9825.html

(0)
上一篇 2023-01-31
下一篇 2023-01-31

相关推荐

  • Python编程环境

    Python编程环境Python编程语言是一种高级的解释型编程语言,最初由Guido van Rossum在1989年开发,建立在C语言之上,旨在提供人类友好的编程语言。Python语言在过去的几十年中快速发展,并成为一种被广泛应用的编程语言。Python编程环境是使用Python编写代码所必需的软件环境。Python编程环境涵盖了一系列必要的工具和库,使得开发者可以高效地编写、测试并部署代码。随着Python语言的应用领域不断扩大,Python编程环境的重要性也在不断增加。

    2024-07-22
    28
  • Sql server语句执行时间查看

    Sql server语句执行时间查看
    /*语句执行时间查看*/declare @begin_date datetimedeclare @end_date datetimeselect @begi…

    2023-04-07
    147
  • redis 5.0.7 源码阅读——双向链表[通俗易懂]

    redis 5.0.7 源码阅读——双向链表[通俗易懂]redis中动态字符串sds相关的文件为:adlist.h与adlist.c 一、数据结构 redis里定义的双向链表,与普通双向链表大致相同 单个节点: 1 typedef struct listN

    2023-01-24
    133
  • Devsecops开源工具_ENCODE

    Devsecops开源工具_ENCODE在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高。当谈及安全威胁,McKinsey 的一篇文章表明,

    2022-12-14
    174
  • Flink的API分层、架构与组件原理、并行度、任务执行计划、chain[亲测有效]

    Flink的API分层、架构与组件原理、并行度、任务执行计划、chain[亲测有效]Flink的API分层 注:越底层API越灵活,越上层的API越轻便 Stateful Stream Processing • 位于最底层, 是core API 的底层实现 • processFunc

    2023-06-17
    146
  • 用Python的Tkinter模块创建GUI窗口

    用Python的Tkinter模块创建GUI窗口图形用户界面(Graphical User Interface, GUI)是现代计算机上最流行的应用程序类型之一。它提供了一种直观和易于使用的界面,可以帮助用户更好地与计算机交互和控制应用程序。Python是一个强大的编程语言,它支持多种GUI工具包,其中Tkinter是一个Python标准库,它提供了创建GUI应用程序的基本工具。在本文中,我们将详细讨论使用Python的Tkinter模块创建GUI窗口的方法,从而帮助您掌握它。

    2024-02-25
    107
  • 迅捷录屏怎么没有声音_迅捷苹果录屏精灵

    迅捷录屏怎么没有声音_迅捷苹果录屏精灵为什么我录制的视频没有声音?我国最近几天增加了确诊病例,其中有几例还是本土病例。在这种情况下,很多学生仍然需要观看教学视频,在观看途中,相信不少人也会用屏幕录像工具录制教学视频以备回放,那么途中有遇…

    2023-03-05
    131
  • 麒麟985处理器怎么样?[通俗易懂]

    麒麟985处理器怎么样?[通俗易懂]  最近上网时,发现很多朋友对于荣耀30系列首发的麒麟985处理器非常感兴趣,作为一个从事手机行业很多年的人士,今天就在这里和大家聊一聊,荣耀30系列首发的麒麟985处理器究竟怎么样?   首先在5…

    2023-02-26
    132

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注