当前位置: 首页 > article >正文

sql中的left join, right join 和inner join,union 与union all的用法

left join, right join 和inner join:这些都是SQL中用来连接两个或多个表的操作。
union,union all:用于合并两个或多个 SELECT 语句的结果。
但是有时候,对于Select出来的结果集不是很清楚。

假设我们有两张表。person表是左边的表。address是右边的表。我们分别用inner join,left join和right join,去验证select的结果集到底有什么区别。
在这里插入图片描述
1.inner join,也称内连接,我们写出来的sql如下:

select * from test.person p inner join test.address a on a.personID = p.personId 

这条sql的查询结果是:在这里插入图片描述
由此可见,返回的结果行是连接条件为真的行。如果连接条件没有匹配行,那么返回的结果,就会是空的。
在这里插入图片描述
2.left join,也称左连接,给定下面sql语句:

select * from test.person p left join test.address a on a.personID = p.personId 

这条sql的查询结果是:
在这里插入图片描述
可以从结果中看到,返回了person表中所有的行,以及address表匹配的行,如果address表中没有匹配的行,则返回NULL。可以总结为:select结果集是返回左边表中的所有行,以及与右边表匹配的行,如果右边表中没有匹配的行,则返回NULL

3.right join,也称右连接,顾名思义,用法与左连接是相似的。依旧给定语句:

select * from test.person p right join test.address a on a.personID = p.personId 

这条sql的查询结果是:
在这里插入图片描述
可以从结果中看到,返回了address表中所有的行,以及person表匹配的行,如果person表中没有匹配的行,则返回NULL。可以总结为:select结果集是返回右边表中的所有行,以及与左边表匹配的行,如果左边表中没有匹配的行,则返回NULL

4.union和union all
与上面三个不同的是,union和 union all内部的 select语句必须拥有相同数量的列,并且列的顺序必须相同,同时,列也必须拥有相似的数据类型
比如给定以下两条sql:

select personID from test.person
select personID from test.address

使用union时的结果如下:

select personID from test.person 
union
select personID from test.address

在这里插入图片描述
使用union all时的结果如下:

select personID from test.person 
union all
select personID from test.address  

在这里插入图片描述
由此可见,union是选取不同值返回。union all是返回所有的值


http://www.kler.cn/a/152098.html

相关文章:

  • Redis未授权访问-CNVD-2019-21763复现
  • python+pytest接口自动化(5)-requests发送post请求
  • 运行启动vue项目报报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS解决
  • 二、shell编程快速入门
  • 7.23 SpringBoot项目实战【评论】
  • 嵌入式硬件基础知识——1
  • golang 集成logrus日志框架
  • 微服务实战系列之Nginx(技巧篇)
  • AI落地现状:没有mission、业务零碎、连2B还是2C都在摇摆
  • 制造企业建设数字工厂管理系统的难点主要有哪些
  • qt 5.15.2 的编译部署quazip-0.7.3项目过程
  • JSP+servlet实现高校社团管理系统
  • Intellij IDEA 的安装和使用以及配置
  • 免费WordPress站群插件-批量管理站群的免费软件
  • Redis核心数据结构
  • LSTM seq2seq 模型之英语到法语翻译
  • 网络套接字
  • Vue模块与小程序生命周期
  • pyrosetta学习相关(1)
  • 大数据分析与应用实验任务十