sql的内连接、左连接、右连接

article/2025/9/23 12:07:24

 多表联查时,有些数据没有对应另一个表的数据,即对应为空。

內连接:仅选出两张表中互相匹配的记录,有对应为空的则筛选出去,这些数据就不会被搜索出来。内连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来。

语法:select 字段 from 表1 inner join 表2 on 条件;

select * from 表1,表2where 条件    from后面直接写两个表名,这样写等价于内连接 如果不写 where 条件,相当于笛卡尔积,即输出表1所有数据对应表2所有数据的结果。

外连接:包括左连接、右连接等。

        左连接:会保留一部分对应为空的数据,语法为select 字段 from 表1 left join 表2 on 条件,只返回左表(即表1)中不符合连接条件单符合查询条件的数据行,即所有表1的数据。

        右连接:和左连接相反,会保留一部分对应为空的数据,语法为select 字段 from 表1 right join 表2 on 条件,只返回右表(即表2)中不符合连接条件单符合查询条件的数据行,即所有表2的数据。

WHERE条件放在ON后面查询的结果是不一样的。

ON条件:是过滤两个链接表笛卡尔积形成中间表的约束条件。
WHERE条件:在有ON条件的SELECT语句中是过滤中间表的约束条件。在没有ON的单表查询中,是限制物理表或者中间查询结果返回记录的约束。在两表或多表连接中是限制连接形成最终中间表的返回结果的约束。
从这里可以看出,将WHERE条件移入ON后面是不恰当的。推荐的做法是:
ON只进行连接操作,WHERE只过滤中间表的记录。

此段转自:深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接 - New.Young - 博客园

eg:

学生表

班级表

 学生表的classid和班级表的id对应,关系为多对一  

内连接:

select * from student inner join classes on student.classid=classes.id

结果:

左连接(推荐): 

select * from student left join classes on student.classid=classes.id

结果:

可见,左表的数据是全的 

右连接:

select * from student right join classes on student.classid=classes.id

结果:

可见右表的数据是全的


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

相关文章

SQL Server左连接

LEFT JOIN 子句用于查询来自多个表的数据。它返回左表中的所有行和右表中的匹配行。 如果在右表中找不到匹配的行,则使用 NULL 代替显示。 以下图说明了两个结果集的左连接结果: 以下说明如何使用 LEFT JOIN 子句来连接两个表 T1 和 T2 : 在…

SQLserver 外连接查询-左连接查询

外连接包括 : (左外连接 右外连接 全连接 简称 为:左连接 右) 先上定义: /*左连接 left join on 返回左表的所有行,对应右表中数据有一对多的联系,则全部展示,右表中没有匹配 上 &am…

SQL左连接数据变少

前一段时间,同学写sql碰到一个问题:两段sql连接看似一样,但是条数却不一样。原因是在左连接之后的where条件对数据进行了筛选,使得数据变少了。两段sql如下: select count(1)from (select *from KXAPP.I_CASH_LOAN_WH…

SQL 左连接中on后面加where和加and的区别

阅读目录 1、首先来谈谈什么是left join 2、再来谈谈on后面使用and和where的区别 3、总结 今天的最佳表现应该作为明天的最低要求 1、首先来谈谈什么是left join left join即左连接,比如表1左连接表2,以左表为主,表示以表1为主&#xff0c…

SQL 内连接、左连接、右连接案例

概念 左连接(Left Join):以左表为主表,左表中每条数据都会跟右表所有数据进行对比一次,当所有条件不满足时,对应的右表数据以 null 显示 1 语法:select * from tbl1 Left Join tbl2 on tbl1.ID…

SQL左连接中的on and和on where的区别

转载,原文链接:http://blog.csdn.net/xingzhemoluo/article/details/39677891 SQL左右连接中的on and和on where的区别 在使用left join时,on and和on where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条…

左连接 oracle条件查询,sql 左连接查询条件and与where

用一条SQL查询一张表中不同级别的字段(字段名称相同)。 需求:用一条SQL同时查出城市id、城市name、省份id和省份name。 版本一如下 SELECT tlUp.LOCATION_ID as cityId, tlUp.LOCATION_NAME as cityName, tlDown.LOCATION_ID as provinceId, tlDown.LOCATION_NAME as province…

oracle左连接优化,关于SQL左连接效率问题

项目在开发新功能,涉及到一张表,里面数据有一百多W的条,表字段竟然有一百多个。。实在是没法再往下新增加字段了,于是就新增了一张表,用做扩展吧,通过表key来关联。后来涉及到以扩展表中某个字段作为查询条…

oracle 左连接 简写,SQL左连接

原标题:SQL左连接 今天分享一下开发中何时运用左连接进行关联查询(大牛请忽视~)。 废话不多说,直接上表结构。只有两张表作为例子,Person表为人员信息,Types为人员类型辅助表,没有定义外键关联。 记住这句话——运用左…

SQL中的左连接和右连接

SQL中的左连接和右连接 SQL中的左连接和右连接 为什么面试官喜欢问这个问题?为什么自己明明会SQL但是这个问题却模棱两可?今天为大家解决这个问题。话不多说,直接上案例~ 创建两张表 首先创建第一张表class,字段如下图所示。 …

SQL查询左连接、右连接、内连接

1、左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。 下边以A表和B表为例子,A…

sql的左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)的详解

sql的左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)的详解: 这里以两个表的连表为例: 创建表1:为人员表,这里将它当做左表; CREA…

SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)

文章目录 前言一、概念二、例子总结 前言 最近在做SQL相关的练习,发现以前那么自信的SQL放久了不碰也变得棘手起来,特别是这一块表之间的内外连接。所以这篇是关于这个内外连接的整理。 一、概念 首先还是介绍一下这三个的定义 1.​Left join&#xf…

如何判断一个数是否为素数(质数)?

用For语句实现循环 基本思路:若一个数n能被2和√n之间的数整除(取余为0),则可判断n为素数。可从2开始测试,一直到√n为止。For语句语法规则 一般形式: for(表达式1;表达式2&#…

素数(质数)判断的五种方法

素数判断的五种方法 素数判断是我们写程序过程中经常遇见的一个问题,于是今天我简单地整理一下常用的素数判断的方法。 素数的介绍 素数定义 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其…

Java中判断质数的方法

Java中判断质数的几种方法 说明: 1.质数:又称素数。是一个大于1的自然数(最小质数为2)。除了1和它自身外,不能被其他自然数整除的数。 >质数:用n除[2,n-1]的所有数,不能整除就是n就是质数。 2.[2,n-1]缩…

C++高效的质数的判断(2种方法)

前提准备 在开始质数的讨论之前,我们先预备一下: 质数的定义:若一个正整数除了1和它自身之外不能被任何自然数整除,则该数称为质数,也叫素数。否则为合数。 由定义可知,所有小于等于1的数既不是质数&…

C语言 判断质数很简单

算法分析:假设对于一个正数a,如果a的约数只有两个,1和它本身,那这样数叫做素数。我们对a在2—a-1之间取余,如果还能找到第三个约数,使得余数为0,那a就不是素数,如果找不到第三个约数&#xff0c…

判断一个数是否为质数(素数)的4种方法

目录 1.什么是质数? 2.如何判断是否为质数? 方法1 方法2 方法3 方法4 1.什么是质数? 首先来看质数的概念: 质数(Prime number),又称素数,指在大于1的自然数中,除了…

判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路

定义:约数只有1和本身的整数称为质数,或称素数。 计算机或者相关专业,基本上大一新生开始学编程都会接触的一个问题就是判断质数,下面分享几个判断方法,从普通到高效。 1)直观判断法 最直观的方法&#xf…