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

相关推荐

  • 【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践[通俗易懂]

    【巨杉数据库SequoiaDB】巨杉Tech |巨杉数据库的HTAP场景实践[通俗易懂]01 背景 由于业务形式的发展,越来越多的需求需要对交易数据进行实时分析,例如推荐、决策、监控等,传统的处理办法是使用ETL的方式把OLTP业务产生的数据同步到OLAP的数据数据库,导致了数据需要在…

    2023-02-09
    150
  • 使用Python快速寻找列表中的最小值

    使用Python快速寻找列表中的最小值计算列表中的最小值是Python中的常见操作之一。我们可以使用内置函数min()、sort(),或者使用循环来寻找列表中的最小值。下面分别介绍这三种方法。

    2023-12-28
    109
  • StoneDB读写分离实践方案「终于解决」

    StoneDB读写分离实践方案「终于解决」在 StoneDB 1.0 版本中,InnoDB 引擎处理 OLTP 的事务型业务,Tianmu 引擎处理 OLAP 的分析型业务。因此,需要在主从复制环境的基础上做读写分离,所有的写操作和部分读操作

    2023-06-09
    131
  • 如何安装Jupyter?

    如何安装Jupyter?Jupyter是一款优秀的开源软件,最初是IPython Notebook的扩展,支持多种编程语言(如Python、R、Julia等)的交互计算和数据可视化。它集成了代码、文本、图像、音频和视频等多个元素,可以将代码、文本、图表和注释混合在一个单一文档中。由于其兼容各种编程语言且易于使用,Jupyter在数据科学和机器学习领域广泛应用。本文将介绍如何在不同的操作系统上安装Jupyter。

    2024-06-12
    55
  • sql语言删除一个表的命令是_sql批量删除表

    sql语言删除一个表的命令是_sql批量删除表学习要点 使用 DROP TABLE 语句来删除表。 使用 ALTER TABLE 语句向表中添加列或者从表中删除列。 一、表的删除(DROP TABLE 语句) 此前介绍的都是关于 Product

    2023-04-26
    157
  • integer127与integer128的区别_数据库tinyint类型

    integer127与integer128的区别_数据库tinyint类型想要了解取值范围首先需要知道的是 bit 和 Byte 的概念 bit :位 二进制数系统中,位通常简写为 "b",也称为比特,每个二进制数字 0 或 1 就是一个位(bit)。位

    2023-04-22
    158
  • Python Spyder 简介

    Python Spyder 简介Python 是一种解释型高级编程语言,被广泛用于各种科学计算、人工智能、Web 开发等领域。Spyder 是一种基于 Python 的集成开发环境(IDE),提供了代码编辑器、运行控制、变量检查器等功能。

    2024-06-10
    58
  • MySQL字符串截取的4个函数[亲测有效]

    MySQL字符串截取的4个函数[亲测有效]1、从左开始截取字符串 left(str, length) 说明: left(被截取字段,截取长度) 例如: select left(content,200) as abstract from my…

    2023-01-31
    157

发表回复

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