SQL中,表之间的左联和右联是什么意思

article/2025/9/17 8:03:57

首先来看张图片:

定义:

左联:首先取出A表中所有数据,然后再加上A、B表通过关联字段key查询到的数据

右联:首先取出B表中所有数据,然后再加上A、B表通过关联字段key查询到的数据

内联:查询A、B表通过关联字段key查询到的数据

非关联字段key的数据:当A表为主表时,在B表中该关联字段key为空值的数据为非关联字段

 

表关联是在SQL中非常常用的东西

join全连接:查找左表(主表)和右表(子表)都存在的数据

left join左联接:查找左表(主表)为查找全集,右表(子表)存在的关联出来,不存在的为NULL。

right join右连接:刚好和left join相反

full join全集关联:相当于把left join 和right join 综合起来,即左表(主表)和右表(子表)关联,如果能关联到的显示,如果左有右表没有,则右表显示NULL,如果右表有左表没有 则左表显示NULL

举个例子,你现在有两张表,学生表和成绩表

学生表中有两列数据:学生ID和学生姓名,成绩表中有三列数据,成绩ID、学生ID和总分数

假设学生表中有三行数据,ID为1,2,3,姓名分别为张三,李四,赵五

假设成绩表中也有三行数据:成绩ID为1,2,3,学生ID为 2,3,5,成绩为60,85,90

如果你写 select * from 学生表 a join 成绩表 b on a.学生ID=b.学生ID

会出现学生ID为2,3的两条数据

如果你写 select * from 学生表 a left join 成绩表 b on a.学生ID=b.学生ID

会出现学生ID为1,2,3的三条数据,但学生ID为1的那条数据关联到的成绩表信息全为NULL

如果你写 select * from 学生表 a  right join 成绩表 b on a.学生ID=b.学生ID

会出现学生ID为2,3,5的三条数据,但学生ID为5的那条数据关联到的学生表信息全为NULL

如果你写 select * from 学生表 a  full join 成绩表 b on a.学生ID=b.学生ID

会出现学生ID为1,2,3,5的全部数据,但学生ID为5的那条数据关联到的学生表信息全为NULL,学生ID为1的那条数据关联到的成绩表信息全为NULL

左联就是左表作为主表,左连接where只影向右表,右联与之相反。

select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID
左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据。
简言之 Left Join影响到的是右边的表

 

1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

一般要使得数据库查询语句性能好点遵循一下原则:
在做表与表的连接查询时,大表在前,小表在
不使用表别名,通过字段前缀区分不同表中的字段
查询条件中的限制条件要写在表连接条件前
尽量使用索引的字段做为查询条件


http://chatgpt.dhexx.cn/article/YtNYgicG.shtml

相关文章

数据库内联、左联和外联的区别

INNER JOIN(内联):两个表a,b 相连接,取出符合连接条件的数据,数据集C LEFT JOIN(左联):先返回左表的所有行,再加上符合连接条件的匹配行,数据集A1数据集C R…

RDD、矩阵基础——3. 矩阵、向量(Breeze、BLAS)

MLlib库底层的Vector(向量)、Matrix(矩阵)运算使用了 Breeze库和BLAS库。 Breeze库提供了相应计算的接口(Linalg)。 但是在MLlib里面同时也提供了Vector和Linalg等的实现。 BLAS(线性代数运…

WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

(WARNING : Using NumPy C-API based implementation for BLAS functions)的解决方案 情况说明问题的解决第一步:使用CMD安装类库第二步:在用户目录下放置一个文件 验证 情况说明 再训练生成对抗网络GAN时,需要Pylear…

BLAS之GEMM和GEMV

BLAS简介 BLAS全称是Basic Linear Algebra Subprograms是规定了一套低级的执行常见线性代数操作的规范。其实现经常针对特殊的机器进行优化,比较著名的BLAS库有ACML, ATLAS, MKL, OpenBLAS。许多常见的数值软件均采用兼容BLAS规范的实现库来进行线性代数计算&#…

linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文

系统是centOS6.5,机器上已有gfortran编译器 从网上搜索下载blas、cblas、lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd blas #blas的解压文件夹 gfortran -c -O3 *.f #编译生成.o执行文件 ar rv libblas.a *.o #链接所有的 .o文件&#xff0…

BLAS学习

导师突然通知要开始关于blas的讨论班,之前甚至都没听说过blas这个词,又要开始新一波的锤炼小白之路了… 1. BLAS简介 首先BLAS的全称是 Basic Linear Algebra Subprograms,即 基础线性代数子程序库,其中包含了一系列基本的线性代…

android 您的手机上未安装应用程序的解决方法

android 创建桌面快捷方式的时候设置应用名称和图标是完全没有问题,但是点击快捷方式的时候出现“您的手机上未安装应用程序“,这是快捷方式的执行目标设置错误,也就是启动Activity。有些应用的启动Activity是欢迎界面,创建快捷方…

android显示应用程序未安装,如何解决安卓系统显示应用程序未安装

我们在安装软件的时候经常会遇到应用程序未安装这个问题,尤其是在更新软件或者是从ROM提取出来的软件会出现这样的问题。那我们该如何处理这个问题呢?下面我就为大家列举几个解决这种问题的办法。 产生应用程序未安装的原因 软件签名不一致。这种情况一般…

什么是android应用程序未安装,应用程序未安装,教您安卓系统应用程序未安装怎么解决...

大家在使用智能手机的时候,尤其是安卓系统的手机,在安装应用程序,也就是App的时候,有时会提示“应用程序未安装”,相信很多使用安卓机器的朋友都曾遇到过“应用程序未安装”的问题,但是懂得解决的用户并不多…

android studio AVD模拟器安装某些app出现 “app not installed(未安装应用程序)”的问题

android studio AVD模拟器安装某些app出现 “app not installed(未安装应用程序)”的问题 参考: 安装apk时出现INSTALL_FAILED_NO_MATCHING_ABIS?Android 开发之 INSTALL_FAILED 汇集表 问题说明 在为安卓模拟器中android 11版本的系统安装一些常用软…

一加5应用未安装怎么解决_应用程序未安装怎么解决 手机提示应用程序未安装解决办法...

安卓手机系统的应用繁多,丰富人们使用体验的同时,有时候还会出现种种问题,比如安装提示“应用程序未安装”,那么,遇见这个问题应该怎么处理呢?请阅读本文教程! 手机提示应用程序未安装解决办法 …

android开发下载安装app提示未安装应用

出现的情况是通过usb可以安装,然后用androidStudio运行生成的apk,发送出去,下载安装,提示未安装应用: 问题如图: 解决过程:在百度上看一些方案,不一致呢,问了问别人,通过正确的打包方式打包试一下,尝试过在AndroidStudio通过Build,然后Build…

什么是android应用程序未安装,显示“应用程序未安装”是怎么回事?程序未安装的解决图文步骤...

安卓手机安装应用的时候,有时候会莫名其妙无法安装……明明存储空间够的啊摔!经过搜索和尝试,本人找到一种可行的方法,下面分享给大家。目前看来,这是部分系统内的bug,下面,小编跟大家介绍安卓系统应用程序…

Andorid手机安装apk文件,提示应用未安装

项目场景:Andorid手机安装apk文件,提示应用未安装 通过Andorid studio打包生成的apk文件,在Andorid手机上安装时,提示应用未安装 安装apk文件到手机上,提示“应用未安装” 原因分析: 可能是手机上的Andor…

安装APK时提示“应用未安装”

情况说明:最近在做公司的移动端项目,作为新手碰到许多问题,不过也算是在披荆斩棘般前行。本来今天星期一高高兴兴来上班,结果测试姐姐跑过来说应用程序安装不上,忙活了一上午也没什么结果,最后还是靠公司前…

应用未安装

安卓删除软件之后安装失败 我在使用uniapp开发玩一个软件之后,打包,由于安卓之前是有一个旧的版本的,于是我把旧的版本删除之后,再去安装新的包,就会一直报错。 如图所示 出现这种原因是因为我在删除的时候&#xff…

手机apk应用程序未安装解决办法

用智能手机很多都会遇到“X应用程序未安装”这种情况,这是为什么呢?1、软件未卸载干净,比如是我以前手机装过手机淘宝,非正常卸载后再装可能就提示X应用程序未安装;2、下载的安装包不完整,也会导致X应用程序…

89C51单片机中的中断系统

89C51单片机中的中断系统 对于在单片机中的学习,中断系统是一难点,如果中断系统没有理解透彻,51单片机的学习就算是失败的。 首先,举例说明下什么是中断。 eg.当你在家正在吃着爆米花,看着电视,突然门铃响…

AT89C51单片机交通灯仿真图+代码

接上篇万年历,这篇博客也是记录我的实训内容,我们实训有万年历和交通灯。好了不说闲话,上正文。 不知道为何突然发现说原创审核不过,完全手写的,也不知道为何,哭 注:在评论有附本人交通灯的图噢…

基于AT89C51单片机的电子万年历PROTEUS仿真设计

目录 前 言 1 第一章 工作原理 2 1.1设计目标 2 1.1.1基本功能 2 第二章 硬件设计与原理 3 2.1 总设计框图 3 2.2 硬件设计分析 3 2.2.1 电源的设计 3 2.2.2 单片机最小系统 4 2.2.3 显示系统 10 2.2.4 LCD1602的指令说明及时序 12 2.2.5 LCD1602的RAM地址映射及标准字库表 14 …