Mysql 中left join时 on、and、where区别

news/2024/10/18 23:23:53/

1、准备两张表student与class表

  • student

  • class

 2、left join on左连接

select * 
from 
student s
left join class c
on s.classId = c.id

左表数据全部显示,关联到的右表数据显示,没有显示null 

 3、left join on ... and对左表student进行条件筛选

select * 
from 
student s
left join class c
on s.classId = c.id
and s.`name` = '王五'

首先总体的行数并没有影响,其次不符合左表(student表)的条件,右表(class表)显示为null 

 4、left join on ... and对右表class进行条件筛选

select * 
from 
student s
left join class c
on s.classId = c.id
and c.`name` = '1班'

首先总体行数依旧没有影响,其次不符合右表的筛选条件,右表(class表)显示为null

5、left join on ... where对左表student进行条件筛选

select * 
from 
student s
left join class c
on s.classId = c.id
where s.`name` = '王五'

过滤掉了student表和class表两个表的不满足的条件的行,从而只留下了一行结果 

 6、left join on ... where对右表class进行条件筛选

select * 
from 
student s
left join class c
on s.classId = c.id
where c.`name` = '1班'

和上面的相同,都是过滤掉两个表不满足的行 

 7、总结

  • on关键字是对left join的右表进行条件过滤,但是依旧会返回左表的所有内容,右表不满足on条件都置为null
  • and关键字,不管是左表还是右表的条件,左表的内容依旧不变,不符合and筛选条件的右表置为null。
  • where关键字,不管是左表还是右表,只要不满足where筛选条件的两个表都会过滤掉。

http://www.ppmy.cn/news/63293.html

相关文章

浅谈 如何设置和管理磁盘配额,以限制用户对磁盘空间的使用

在Linux系统中,可以使用磁盘配额来限制用户对磁盘空间的使用,防止磁盘被某个用户或进程占满而导致系统故障。以下是设置和管理磁盘配额的步骤: 安装quota软件包 quota是一个用于磁盘配额管理的软件包,在Linux系统中可以使用以下…

Logstash使用Canal插件实现MySQL数据实时同步到ES

要在Logstash中使用Canal插件,你需要按照以下步骤进行设置: 安装Logstash:首先,你需要在你的系统上安装Logstash。你可以从Elastic官方网站下载适用于你的操作系统的Logstash安装程序,然后按照官方文档提供的说明进行安…

JavaScript call,callee,caller,apply,bind之间的区别

(现实是此岸,梦想是彼岸,中间隔着湍急的河流,行动则是架在河上的桥梁。——克雷洛夫) call call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 MDN链接 call方法可以将一个对象属性作为…

P9299 [CCC 2023 J1] Deliv-e-droid

题目描述 In the game, Deliv-e-droid, a robot droid has to deliver packages while avoiding obstacles. At the end of the game, the final score is calculated based on the following point system: Gain 5050 points for every package delivered.Lose 1010 points…

操作系统:中断

目录 什么是中断什么是软中断系统里有哪些软中断?如何定位软中断 CPU 使用率过高的问题?参考资料 什么是中断 中断是操作系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的程序,然后调…

链路,设备,带宽冗余技术

链路冗余: 一.设计冗余的目的——提高可靠性(通信时一条路不通走另一条路即冗余链路) 采用具有冗余的核心层,分布层和接入层,试图消除网络中的单点故障二.实施冗余的注意事项 1.MAC数据库不稳定—MAC地址表中的内容不…

思享工具箱,各种工具汇总

站长,开发者常用在线工具集合 - 思享工具箱 思享工具箱,各种工具汇总 https://tool.4xseo.com/ JSON工具 Json格式化 Json格式化(上下) Json格式化(左右) Json在线压缩转义 Json生成C#实体类 Json生成Java实体类 Json生成Go结构…

达梦:dts工具迁移mysql decimal(65,30)的字段,报精度超出定义

本文旨在分享迁移MySQL decimal字段​​​​​​​时遇到“精度超出定义”问题时,如何理解MySQL和达梦对于decimal 等这一类数值数据类型。 1.了解达梦的数值数据类型定义 ​​​​​​​​​​​​​​NUMERIC 类型 语法:NUMERIC[(精度 [, 标度])]功…