每天一篇Excel技术图文微信公众号:Excel星球NO.660-什么是函数数组作者:看见星光微博:EXCELers / 知识星球:Excel

HI,大家好,我是星光。

博尔赫斯在《交叉小径的花园》里有一段名言:

在大部分时间里,我们并不存在;在某些时间,有你而没有我;在另一些时间,有我而没有你;在有些时间,你我都存在……

咱们上一章讲过,在语句形式上,多表连接查询通常有两种实现方式,不知道你是否还记得?当时咱们也聊了第1种方式,也就是简单粗暴的FROM+WHERE,今天咱们就来聊第2种方式,JOIN+ON……

语法如下:

SELECT column FROM join_table JOIN_TYPE join_table ON(join_condition)

Join_table是指定参与连接的表名。

JOIN_TYPE是连接的类型。

ON (join_condition)是指定连接的条件,通常由字段名和比较运算符、逻辑运算符构成。

连接的类型(JOIN_TYPE)常用的有3种,内连接(INNER JOIN)、外连接(OUT JOIN)和交叉连接(CROSS JOIN)。

我们先来说交叉连接(CROSS JOIN)……

为什么先说CROSS JOIN?次要原因是在这个早晨它总是让我想起笛卡尔,想起博尔赫斯,想起博尔赫斯《小径分叉的花园》,这让我难过;更次要原因是我们对它是比较熟悉的……

为什么说我们对他比较熟悉?……

交叉连接是返回连接表所有记录行的笛卡尔积,也就是列出连接表之间所有行的可能性组合——这和我们上期分享的FROM+WHERE语句是不是如出一辙?

事实上,FROM+WHERE的多表连接便是交叉连接;以下两个表达式也完全是等价的。

SELECT 字段名 FORM 表1,表2
SELECT 字段名 FROM 表1 CROSS JOIN 表2

举个小例子

……

……

还是不举了。

不举的原因是……单纯点别瞎想……EXCEL和ACCESS并不支持CROSS JOIN语句,如果需要交叉连接,请使用FROM +WHERE的方式。

这就是我们先聊CROSS JOIN的主要原因——没得聊。

卒。

……

再说下内连接。

内连接通过关键字INNER JOIN 将多表连接,并通过关键字ON,指定连接条件。

语法如下:

SELECT 字段名 FROM 表1 INNER JOIN 表2 ON 连接条件

内连接又称等同连接,返回连接表所有相匹配的记录,舍弃不匹配的记录。

这句话是什么意思呢?举个例子。

如下图所示,有两张表,左边是‘花名册’,后边是‘成绩表’

现在我们需要查询组别为‘二组’的人员的成绩。也就是查询‘看见星光’,‘小苏’和‘VBA编程’三个人的成绩。

语句如下:

SELECT a.*,b.成绩 FROM [花名册$]a INNER JOIN [成绩表$]b ON a.姓名=b.姓名 WHERE 组别='二组'

系统先运算FROM子句,FROM [花名册$]a INNER JOIN [成绩表$]b ON a.姓名=b.姓名。该语句中,我们使用内连接的方式将‘花名册’和‘成绩表’两个表格相连,连接的条件是两个表姓名记录相等,得到中间表如下:

然后系统运算WHERE子句,WHERE 组别='二组',从中间表中删除组别不等于’二组’的记录。

最后按SELECT子句提取字段内容。SELECT a.*,b.成绩, a是[花名册$]的别名,a.*意思就是[花名册$]的所有列。b.成绩就是[成绩表$]的成绩列。

最终获得查询结果如下:

此时我们发现一个秘密。

花名册的二组明明有三个人,但查询结果却只有两个人,少了谁?——少了‘看见星光’。

为什么谁都不少,偏偏少了‘看见星光‘呢?’看见星光‘这家伙到底有和不同寻常之处?脸大?跑的快?还是年纪大不洗澡?……

真相只有一个。

内连接只返回连接表中符合连接条件的记录。

示例中的连接条件是ON a.姓名=b.姓名,也就是只返回’花名册’和’成绩表’姓名相等的记录,花名册有‘看见星光’,但‘成绩表’并没有这位大爷,因此该条记录明显不相等,不予返回。冷漠脸。

如果我们使用交叉连接的方式,是否查询结果会有不同呢?

比如使用我们上期讲过的语句:

SELECT 组别,a.姓名,成绩 FROM [花名册$]a , [成绩表$]b  WHERE 组别='二组'     AND a.姓名=b.姓名

然后发现结果并无不同,依然不见’看见星光’的踪影。

……

……

不管是内连接还是交叉连接(FROM+WHERE),都是由连接表中符合连接条件的行构成结果表,也就是说,任何一个表中的行在另外一个表中不匹配,也就不会出现在最后的结果表中……

但有时候我们并不希望如此;比如A表和B表两表连接查询,不管是否有匹配结果,我们都希望保留A表的所有行,或者保留B表的所有行,再或者保留两个表合起来的所有行……

如何解决这个问题?

——啪!欲知后事如何,且听下回分解外连接~

我给你瘦落的街道、绝望的落日、荒郊的月亮。

我给你一个久久地望着孤月的人的悲哀。

——《我用什么才能留在你》

——博尔赫斯

select * from什么意思_SQL入门教程第15课:什么是内连接相关推荐

  1. TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)

    TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...

  2. TurboLinux入门教程:第七课TurboLinux简介(转)

    TurboLinux入门教程:第七课TurboLinux简介(转) 第七课 TurboLinux简介 TurboLinux是拓林思公司最近发行的linux版本,已在日本和中国取得了巨大的成功,在美国也 ...

  3. TurboLinux入门教程:第八课进入与退出系统(转)

    TurboLinux入门教程:第八课进入与退出系统(转) 第八课 进入与退出系统 TurboLinux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统.本章主要讨 ...

  4. VR三维数字沙盘电子沙盘大数据可视化交互GIS系统开发教程第15课

    VR三维数字沙盘电子沙盘大数据可视化交互GIS系统开发教程第15课:现在不管什么GIS平台首先要解决的就是数据来源问题,因为没有数据的GIS就是一个空壳,下面我就目前一些主流的数据获取 方式了解做如下 ...

  5. mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)

    前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...

  6. 蘑菇云「行空板Python入门教程」第九课-智慧农业物联网系统2

    5G元年的列车早已驶出,人工智能.大数据的浪潮还在涌动,云办公.云问诊成为防疫期间的热词. 现如今,物联网技术正处于时代发展的风口,相较于传统的硬件设备,物联网技术使得各种硬件设备能够通过信息传输设备 ...

  7. 《SQL 入门教程》第07篇 多表连接查询

    <SQL 入门教程>专栏目录 第01篇 SQL 简介 第02篇 查询初体验 第03篇 查询条件 第04篇 结果排序 第05篇 限定结果数量 第06篇 分组与汇总 第07篇 多表连接查询 第 ...

  8. mysql教程左右链接_mysql的左右内连接用法实例

    本文实例讲述了mysql的左右内连接用法.分享给大家供大家参考.具体如下: 用个例子来解析下mysql的左连接, 右连接和内连接 create table user_id ( id decimal(1 ...

  9. SQL入门之第十讲——INNER JOIN 内连接

    在实际的业务当中,往往需要多张表连接查询,这就会涉及到JOIN 连接 1. JOIN 连接的类型 INNER JOIN :内连接, 可以只写JOIN ,只有连接的两个表中,都存在连接标准的数据才会保留 ...

最新文章

  1. “惊群”,看看nginx是怎么解决它的
  2. 我也来说一下SilverLight3的ChildWindow--带Logo的标题
  3. 老旧的金融机构,是时候赶赶云计算的时髦了
  4. gitlab远程提交
  5. Android Studio运行报错Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
  6. wxWidgets:在对话框之间共享信息
  7. 每天一道LeetCode-----计算给定序列中所有长度为k的滑动窗的最大值集合
  8. spring security只要熟悉每个filter的作用和顺序
  9. ROS Kinectic 安装问题
  10. 贪心——无重叠区间(Leetcode 435)
  11. springboot图片上传和显示_Jeewx-Boot 1.1 版本发布,基于SpringBoot的开源微信管家系统...
  12. 【CFD学习】网格无关性验证
  13. sim800a指令_SIM900A 各功能指令 详细版
  14. .Net Core Pdf 转图片
  15. 倒计时 4天,COSCon'22 会议议程全览 精彩亮点抢鲜看!
  16. Windows打开热点断网解决方法
  17. Android批量打包-如何一秒内打几十个apk渠道包
  18. html未响应是什么原因,ie浏览器未响应如何解决
  19. 【dev Cpp新手请进】dev导入ege图形库
  20. Excel如何快速提取图片地址位置?

热门文章

  1. IDP:云原生的“Jupyter”,让算法团队更高产
  2. 从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...
  3. 有一个写代码很厉害的老板是怎样一种体验?
  4. 重返商用计算市场,紫光计算机要做数字化转型生意
  5. Python 3.9 正式版要来了,会有哪些新特性?
  6. 达摩院研发自动驾驶高精定位系统,无GPS信号也可实现厘米级定位
  7. 2020 年 GitHub 上那些优秀 Android 开源库,这里是 Top10! | 原力计划
  8. 一行命令自动给图片戴上口罩,硬核操作!
  9. 超分辨率在移动实时音视频的应用实践
  10. 苹果应用审核团队:每人日审百款 App!