inner join,outer join,left join,right join的区别

2023-05-16

外联接
外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

例如:
表a
id              name
1               a
2               b
3               c

表b
id              store
1              15
2              10
4              67

inner join :
select   *   from  a  inner   join  b  on  a.id = b.id
结果:(只显示id匹配的选项)
id            name             id            store
1              a                 1             15
2              b                 2             10

内连接还有以下写法:
select   *   from  a  inner   join  b  where  a.id = b.id
select   *   from  a,b  where  a.id = b.id  -- 连接查询的另一种写法
select   *   from  a  as  e,b  as  r  where  e.id = r.id  -- 使用as定义别名,当表名很长时有用
select   *   from  a e,b r  where  e.id = r.id  -- 定义别名时可以省掉as
外连接分左外连接和右外连接
左外连接:
select   *   from  a  left   outer   join  b  on  a.id = b.id
或:
select   *   from  a  left   join  b  on  a.id = b.id
结果:(除了显示匹配记录,还显示a表中所有的记录)
id            name            id            stroe
1              a                 1             15
2              b                 2             10
3              c                \N             \N

右外连接:
select   *   from  a  right   outer   join  b  on  a.id = b.id
或:
select   *   from  a  right   join  b  on  a.id = b.id
结果:(除了显示匹配的记录,还显示右表中所有的记录)
id            name            id            store
1              a                1              15
2              b                2              10
\N            \N               4              67

转载于:https://www.cnblogs.com/qiangshu/archive/2009/11/25/1610206.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

inner join,outer join,left join,right join的区别 的相关文章

  • 在 SQL 中连接多个表

    有人可以向我解释一下连接吗 内连接根据where条件选择公共数据 左外连接从左表中选择所有数据 而不考虑公共数据 但从右表中获取公共数据 右外连接反之亦然 我知道基础知识 但当涉及到 5 8 10 个以上的表时 问题仍然存在 假设我有 10
  • 无法从 $this->db->last_query() 获取结果;代码点火器

    这是一个很简单的问题 必须讨论很多次 但我仍然无法得到 this gt db gt last query 的结果 this gt db gt select count as totalverified res sales upduser e
  • 左外连接不返回主表中的所有记录

    当我执行左外连接时 我希望在添加连接表之前获取查询将返回的所有记录 但它仅返回与连接表匹配的记录 即 表中不存在 092387 的记录 文档 所以我只想为该记录的 文件名 字段返回 null 我做错了什么 mysql gt select d
  • 在 Unix 上连接文本文件中的多个字段

    我该怎么做 File1看起来像这样 foo 1 scaf 3 bar 2 scaf 3 3 File2看起来像这样 foo 1 scaf 4 5 foo 1 boo 2 3 bar 2 scaf 1 00 我想做的是找到同时出现的线条Fil
  • 选择 count(*) 并“连接”3 个表

    我正在寻找 3 个表的联接内的计数查询 它可以让我对其中一个表的不同值进行计数 我有 3 个表 需要连接它们才能获取预期数据 Workflow Message and Message Workflow Relation 我想获取按状态 已连
  • SQL:限制链接到每个连接行的行

    我有某些情况需要 MySQL 查询的某些结果集 让我们先看看当前的查询 然后问我的问题 SELECT thread dateline AS tdateline post dateline AS pdateline MIN post date
  • 如何使用 JPA CriteriaBuilder 查询执行外连接?

    我正在使用 JPA 2 0 Hibernate 4 1 0 Final 和 MySQL 5 5 27 我想构造一个 JPA 查询 每行返回两个实体 并且我想执行右外连接 这两个实体是 Entity Table name user uniqu
  • INNER JOIN ON 与 WHERE 子句

    为简单起见 假设所有相关字段都是NOT NULL 你可以做 SELECT table1 this table2 that table2 somethingelse FROM table1 table2 WHERE table1 foreig
  • 将分割词和标点符号连接到正确的位置

    所以我尝试使用join 将字符串拆分为单词和标点符号后 但它在单词和标点符号之间使用空格连接字符串 b Hello who are you c join b 但这会返回 c Hello who are you 而且我要 c Hello wh
  • MySQL 加入最大值

    通过在 Entry id 上加入下面的表格 我想从 food brands 表中提取具有最高 type id 的行 所以我应该得到下面的前 3 行 其中 type id 为 11940 食品品牌 id brand type id 15375
  • 无法创建类型的常量值在此上下文中仅支持基本类型或枚举类型

    我在下面的查询中收到此错误 无法创建类型的常量值API Models PersonProtocol 此上下文中仅支持基本类型或枚举类型 ppCombined下面是一个IEnumerable的对象PersonProtocolType 由 2
  • FROM 子句中的 PostgreSQL json_array_elements - 为什么这不是笛卡尔连接?

    如果我有这样的表达 SELECT t json column gt gt x nested gt gt y FROM my table t json array elements t gt nested nested 为什么我不需要加入 更
  • Linq to NHibernate 生成到同一个表的多个联接

    当我在 select 和 where 子句中引用同一个表时 linq to Nhibernate 会生成两个连接 一个用于 select 一个用于 where IE from child in Session Query
  • bigquery 中的条件连接

    我有两张桌子 表 1 是单列整数 表 2 有三列 start integer end integer data 简单的查询是将整数列与数据连接起来 其中 integer gt start integer AND integer lt end
  • MySQL:跨多个表的多列联接?

    我有一组三张表 Dining Tables Field Type Null Key Default Extra dining table int 11 NO PRI NULL bus boy varchar 35 NO NULL
  • 将来自另一个表的每行作为数组连接起来

    我正在使用 PHP 为自己编写一个电影存档脚本 我正在从 IMDb 获取电影信息并将其添加到我的数据库中 我正在使用另一个名为 链接 的表添加我选择的电影的链接 这是我用来从数据库获取电影的查询 movies this gt db gt q
  • mysql JOIN,这是如何解释的?

    如果我为 mysql 编写一条 sql 查询 并且只指定 JOIN 没有外连接 内连接 左连接等 那么默认的连接类型是什么 例如 SELECT count FROM Students p JOIN 班级 c ON p studentId c
  • 连接系统 R 中的两个或多个数据帧

    我的问题是如何在 R 系统中连接两个或多个数据帧 例如 我有两个数据框 first x y z 1 3 2 4 2 4 5 7 3 5 6 8 second x y z 1 1 1 1 2 4 5 7 我需要这个 x y z 1 3 2 4
  • INNER JOIN 与 INNER JOIN (SELECT . FROM)

    同一查询的这两个版本之间的性能有什么区别吗 Version 1 SELECT p Name s OrderQty FROM Product p INNER JOIN SalesOrderDetail s on p ProductID s P
  • 在 R 中连接/匹配数据帧

    我有两个数据框 第一列有两列 x是水深 y是每个深度的温度 第二个也有两列 x也是水深 但与第一个表中的深度不同 第二栏z是盐度 我想通过以下方式连接两个表x 通过增加z到第一张桌子 我已经学会了如何使用 key 来连接表tidyr 但只有

随机推荐

  • java核心技术读书笔记

    对象的三个特征 对象的行为 可以对对象施加哪些操作 或者可以对对象施加哪些方法 对象的状态 当施加哪些方法时 对象如何响应 对象的标识 如何辨别具有相同行为与状态的不同的对象 对象的行为是用可调用的方法定义的 对象的状态每个对象保存着描述当
  • centos vnc配置笔记

    1 首先查询是否安装VNC Server rpm qa grep vnc 如果有类似于 xff1a vnc server 的值返回说明已经安装了vnc server 如果没有安装采用yum安装 yum y install vnc 2 配置V
  • ONF解决方案与合作伙伴副主席Aseem Parikh:CORD的社区增长概况及全球发展趋势

    由天地互连 下一代互联网国家工程中心主办的 2017全球SDNFV技术大会 xff08 2017 chinasdn org xff09 于 2017年8月2 3日 xff0c 在北京国宾酒店火热开幕 在3日上午的大会中 xff0c ONF解
  • 视觉语言导航综述Visual Language Navigation

    abstract 视觉语言导航任务 Visual Language Navigation 是让智能体跟着自然语言指令进行导航 xff0c 这个任务需要同时理解自然语言指令与视角中可以看见的图像信息 xff0c 然后在环境中对自身所处状态做出
  • Android 8.0 系统编译解决卡在Ensuring Jack server is installed and started

    参考 xff1a https www cnblogs com zzb Dream 90Time p 9273844 html 这个解决方法是比较全的 xff0c 但是我所有操作都做了 xff0c 依然无法正常编译 解决这个问题花了我2天时间
  • [转]以下划线开头的变量名

    C 43 43 系 统头文件里将宏名 变量名 内部函数名用 开 头就是为了避免与用户用的名字冲突 因为当你 xff03 i nclude 系 统头文件时 xff0c 这些文件里的名字都有了定义 xff0c 如果与你用的名字冲突 xff0c
  • 爬虫所需要的爬虫代理ip究竟是什么?

    爬虫所需要的爬虫代理ip究竟是什么 当我们对某些网站进行爬去的时候 xff0c 我们经常会换IP来避免爬虫程序被封锁 其实也是一个比较简单的操作 xff0c 目前网络上有很多IP代理商 xff0c 例如西刺 xff0c 芝麻 xff0c 犀
  • DirectUI的初步分析

    最近由于项目的需要学习了一下DirectUI方面的东西 主要借鉴的是一个国外程序员写的代码 见引用一 看了后发现它更多的是探讨一种实现的可能性和思路 和实际应用还是有距离的 不过其实现还是很有意思的 在写此小结的时候又发现国内一个程序员将这
  • pcnet32 device eth0 does not seem to be present网卡无法激活

    前一段跟着老师上课的时候学习模块的内容 xff0c 当时不知道无意中动了哪个模块 xff0c 导致无法启动网卡 系统启动日志 xff1a Bringing up interface eth0 pcnet32 device eth0 does
  • Nodejs版本管理方法

    简介 我以前写过关于Nodejs的版本管理 那个时候使用的是n来管理 但是n会在home目录下创建的安装目录不是隐藏的 所以对于我这个强迫症来说就很烦 所以现在就来说说nvm这个nodejs的版本管理工具 安装 安装很简单 一个命令搞定 使
  • 企业面试题:查找/oldboy下所有7天以前以log结尾的文件移动/tmp下。

    企业必考面试题 xff1a 查找 oldboy目录下所有7天以前的以log结尾的文件移动到 tmp下 要求 xff1a 请给出至少三种实现方法 xff0c 有能力的朋友试试看 xff01 工作做事给老大 xff0c 给面试官多种方案 xff
  • 问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】...

    现象 xff1a 点 34 是 Y 34 提示信息中提到的error242440 02 xml文件 xff1a 问题重现 xff1a package poi import java io FileNotFoundException impo
  • Echarts调整图表上下左右的间距,Echarts调整柱状图左右的间距

    Echarts调整图表上下左右的间距 xff0c Echarts调整柱状图左右的间距 gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt
  • SpringCloud使用Prometheus监控(基于Eureka)

    本文介绍SpringCloud使用Prometheus xff0c 基于Eureka服务发现 1 Prometheus介绍 在之前写过两篇有关Prometheus使用的文章 xff0c 如下 xff1a SpringBoot使用promet
  • 服务器搭建网站完整教程

    服务器最大的用途 xff0c 就是可以搭建网站 xff0c 许多人都认为搭建网站是一件很难的事情 xff0c 因为包含许多的比较专业东西 xff0c 比如服务器 编程之类的 xff0c 确实 xff0c 在几年前是这样的 xff0c 普通人
  • cs231n 作业1 心路历程

    cs231n Assignment 1 cww note 做cs231n的作业的一个心路历程 xff0c 不会重复别人写好的材料 xff0c 别人写的数学分析 xff0c 代码 xff0c 比我高到不知道哪里去了 We are here 这
  • VMware vSphere 6 序列号大全

    转载自 http www i5i6 net post 190 html vSphere 6 Hypervisor HY0XH D508H 081U8 JA2GH CCUM2 4C4WK 8KH8L H85J0 UHCNK 8CKQ8 NV0
  • 一元线性回归模型--总体回归模型与样本回归模型

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 总体回归函数 xff08 population regression function xff0c 简称 PRF xff09 将总体被解释变量 Y 的 条件均值表现为解释变
  • Mac百度网盘下载慢怎么办?Mac百度网盘下载满速教程

    Mac百度网盘是不少用户常用的云存储的工具 xff0c 但是很多用户经常抱怨下载速度慢 xff0c 那么Mac百度网盘下载慢怎么办 xff1f Mac百度网盘下载慢怎么解决 xff1f 一起去了解一下吧 Mac百度网盘下载满速教程 xff1
  • inner join,outer join,left join,right join的区别

    外联接 外联接可以是左向外联接 右向外联接或完整外部联接 在 FROM 子句中指定外联接时 xff0c 可以由下列几组关键字中的一组指定 xff1a LEFT JOIN 或 LEFT OUTER JOIN 左向外联接的结果集包括 LEFT