首页 > 数据库 >【MySQL】查询语句之inner、left、right、full join 的区别

【MySQL】查询语句之inner、left、right、full join 的区别

时间:2024-09-13 21:25:13浏览次数:12  
标签:right JOIN 匹配 full SQL join null id

 前言:

        INNER JOIN 和 OUTER JOIN 是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的 结果集 如何处理 匹配 与 不匹配 的行。

目录

1、INNER JOIN

2、OUTER JOIN

3、总结


1、INNER JOIN

        称为内连接,只有查询的几张表中的列值相等时,才会返回这些行数据。如果某行其中一个表没有对应的匹配,那么则不会返回改行数据。

举个例子:有两张表,分别是a、b表。

a表数据                                                                        b表数据

                       

SQL语句:

SELECT a.`name`, b.age
FROM a
INNER JOIN b ON a.id = b.id;

 执行结果:

在这个例子中,id=3 的sr没有匹配的age,因此不会出现在结果中。

 2、OUTER JOIN

        outer join可以细分为三种:left join、right join、full  join

        ①left join:返回左表(这是我们的第一个表)的所有行,即使右表(第二个表)中没有匹配的行,依旧以显示所查询到的字段,只不过输出的结果为null。如下:

 SQL语句:

SELECT a.name, b.age
FROM a
LEFT JOIN b ON a.id= b.id;

  执行结果:

  

        ②right join:返回右表(第二个表)的所有行,即使左表(第一个表)中没有匹配的行,依旧可以显示所查询到的字段,输出也是为null。如下:

SQL语句:

SELECT a.name, b.age
FROM a
RIGHT JOIN b ON a.id = b.id;

执行结果:

 

        ③full join:返回两个表(或多个表)中的所有行,包括没有匹配上的行,在另一张表显示为null。如下:

SQL语句:因为MySQL不支持 full join,我们可以结合left join 与 right join 来模拟 full join(像PostgreSQL、SQL Server、Oracle、IBM Db2 都支持 full join)

SELECT
	* 
FROM
	a
	LEFT JOIN b ON a.id = b.id UNION ALL
SELECT
	* 
FROM
	a
	RIGHT JOIN b ON a.id = b.id 
WHERE
	a.id IS NULL;

执行结果:

3、总结

        1、inner join:仅返回两表(多表)匹配的行。

        2、left join:返回左表所有行与右表匹配行,右表未匹配上显示null。

        3、right join:返回右表所有行与左表匹配行,左表未匹配上显示null。

        4、null join:返回两表(多表)所有行,无论是否有匹配的行,未匹配的都像是为null。

标签:right,JOIN,匹配,full,SQL,join,null,id
From: https://blog.csdn.net/wjjjjxxxx/article/details/142142401

相关文章

  • linq中的join
    LINQ中的Join在LINQ中,Join操作符用于连接两个序列中的元素,基于给定的键匹配。Join操作符允许你根据共同的键来关联两个序列中的项,这对于处理多个相关联的数据集非常有用。代码publicclassEmployee{publicintId{get;set;}publicstringName{get;set;}......
  • [Python数据采集]Playwright-新一代数据采集神器入门(一)
    Playwright是由Microsoft维护的一个开源自动化框架,用于跨浏览器的Web应用程序测试和数据采集。与Selenium类似,它允许开发者控制网页浏览器进行自动化任务,但Playwright提供了更现代化的功能和更高的效率,尤其在处理复杂的网页时表现出色。Playwright的核心特性跨浏......
  • LEFT JOIN 与 left semi join 的区别
    好的,我再给你举一个使用HiveSQL的例子,比较`LEFTJOIN`和`LEFTSEMIJOIN`的区别,并加入测试数据。假设我们有两个表:1.`customers`表:-`customer_id`:客户ID-`customer_name`:客户名称-`customer_email`:客户邮箱2.`orders`表:-`orde......
  • Blender天空预设增强插件:Pure-Sky Pro V6.0.84 Full Pack
    可以在Blender中模拟真实的天空效果,支持Eevee和Cycle渲染器Imagineabeautifulstarryskyonafullmoonnight,asunsetattheseasideorabeautifulsunnyday,withPure-SkyProyoucannowrealizethesedifferentscenesandmuchmore.Blender插件功能多......
  • 02【python+playwright测试自动化】之实现登录邮箱初版
    playwright系列文章目录00Mac安装playwright00Mac安装配置Python3虚拟环境(VirtualEnv、virtualenvwrapper扩展包)01【python+playwright测试自动化】之定位方式文章目录playwright系列文章目录前言一、实现登录邮箱初版总结前言本文只提供简单的网易邮箱登录、......
  • WebUI自动化框架-playwright
    (持续更新)一.环境准备安装playwright:playwright是基于python3.7开发的第三方包,所以需要使用的python版本是3.7及其以上的pipinstallplaywrightplayWright默认是无头模式打开浏览器安装需要的浏览器:chromium、firefox、webkitplaywrightinstall,这一个命令可以一次安装三......
  • [1062] The function of geopandas.sjoin
    ref:https://geopandas.org/en/stable/docs/reference/api/geopandas.sjoin.htmlgeopandas.sjoingeopandas.sjoin(left_df, right_df, how='inner', predicate='intersects', lsuffix='left', rsuffix='right', distance=None, o......
  • `FULL JOIN` 和 `UNION ALL`
    在SQL中,`FULLJOIN`和`UNIONALL`是两种不同的操作,它们的结果也有显著的区别。###FULLJOIN`FULLJOIN`(全外连接)会返回两张表中所有的记录。对于没有匹配的记录,结果中会用`NULL`填充缺失的部分。具体来说:-如果表A和表B中有匹配的记录,这些记录会合并在一起。-如果......
  • MySQL 中的 JOIN 操作:连接数据的强大工具
    在MySQL数据库的使用中,JOIN操作是一个非常重要且强大的功能,它允许我们从多个表中检索数据,从而实现更复杂的查询和数据分析。今天,我们就来深入了解一下MySQL中的JOIN操作。一、为什么需要JOIN操作?在实际的数据库应用中,数据通常被分散存储在多个表中。例如,一个电商系统可......
  • 【0326】Postgres内核之 VACUUM (FULL)构建所有要 VACUUM 的 relation(s) list(17)
    上一篇:【0325】Postgres内核之VACUUM(FULL)创建BufferAccessStrategyobject(16)1.构建vacuum关系表(reltaions)List在上一篇文章中讲解了Postgres内核创建缓冲区策略对象,之后初始化给全局指针变量vac_strategy。接下来Postgres将通过vacuum()函数的参数,以确认用户......