mysql优化,and和where的区别

前情提要:and 则是在表连接前过滤A表或B表里面哪些记录符合连接条件,同时会兼顾是left join还是right join。即
假如是左连接的话,如果左边表的某条记录不符合连接条件,那么它不进行连接,但是仍然留在结果集中(此时右边部分的连接结果为NULL)。on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
这句话是关于MySQL中的表连接操作,特别是left join和right join。表连接是一种将两个或多个表的数据组合在一起的方法,通常需要指定一个连接条件,即哪些字段或列是相等或匹配的。例如,如果有两个表a和b,它们都有一个sid列,那么可以用下面的语句连接它们。

这句话是关于MySQL中的表连接操作,特别是left join和right join。表连接是一种将两个或多个表的数据组合在一起的方法,通常需要指定一个连接条件,即哪些字段或列是相等或匹配的。例如,如果有两个表a和b,它们都有一个sid列,那么可以用下面的语句连接它们:

select * from a join b on a.sid = b.sid;

这里的on子句就是连接条件,它表示只有当a表和b表的sid列相等时,才会将两个表的记录组合在一起。这种连接方式叫做inner join,它只会返回满足连接条件的记录,而忽略不满足的记录。

但是,有时我们可能想要保留不满足连接条件的记录,这就需要用到left join或right join。left join表示以左边的表为基准,即使左边表的某条记录不满足连接条件,也会将它保留在结果集中,只是右边表的部分会用NULL填充。right join则相反,以右边的表为基准,保留右边表的所有记录,左边表的部分用NULL填充。例如,如果用下面的语句连接a表和b表:

select * from a left join b on a.sid = b.sid;

那么,即使a表中有些记录的sid在b表中不存在,也会将它们包含在结果集中,如下所示:

idsidtypesidremark
11a1A
21b1A
32c2B
43d3C
54eNULLNULL

这里,a表中的第五条记录的sid为4,在b表中没有对应的记录,所以右边表的部分用NULL填充。

那么,and和where又有什么区别呢?and是用来在连接条件中添加额外的过滤条件的,它会影响连接操作的结果,但不会改变left join或right join的基准表。where则是用来在连接操作完成后,对结果集进行过滤的,它会改变最终的输出,但不会影响连接操作的过程。例如,如果用下面的语句连接a表和b表:

select * from a left join b on a.sid = b.sid and a.sid = 1;

那么,and子句会在连接前过滤掉a表和b表中sid不等于1的记录,但仍然会保留a表中的所有记录,只是右边表的部分用NULL填充,如下所示:

idsidtypesidremark
11a1A
21b1A
32cNULLNULL
43dNULLNULL
54eNULLNULL

如果用下面的语句连接a表和b表:

select * from a left join b on a.sid = b.sid where a.sid = 1;

那么,where子句会在连接后过滤掉a表中sid不等于1的记录,只返回满足条件的记录,如下所示:

idsidtypesidremark
11a1A
21b1A

因此,and和where的区别在于,and是在连接前过滤,而where是在连接后过滤。and会影响连接操作的结果,但不会改变left join或right join的基准表。where则会改变最终的输出,但不会影响连接操作的过程。

参考:
https://blog.csdn.net/qq_33864656/article/details/77838258

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JOSEF约瑟 静态中间继电器 RZY-600D 110VDC 六常开 导轨安装

RZ-D系列中间继电器 系列型号: RZY-004D中间继电器 RZL-004D中间继电器 RZY-022D中间继电器 RZL-022D中间继电器 RZY-112D中间继电器 RZL-112D中间继电器 RZY-202D中间继电器 RZL-202D中间继电器 RZY-002D中间继电器 RZL-002D中间继电器 RZY-060D中间继电器 RZL-060…

mysql学习打卡day17

今日成果: insert into products (name,quantity_in_stock,unit_price) values(t1,10,1.1),(tom,20,1.23),(t2,11,12.2); -- 一次插入多条数据 -- 字符串和日期需要加引号 -- PK代表主键记录的唯一标识 -- NN表示非空 -- AI表示自动增长 感谢各位读者查阅&#x…

锂电池基础知识

锂电池基础知识 锂电池容量 电池容量用**毫安时(mAh)**表示,如5200mAh电池,表示电池以5200mA5.2A的电流放电,可持续放电1小时。锂电池上标的电容量是4.2V放电至2.75V所获得的电量。 锂电池节数 锂电池的节数用几S来…

从CNN ,LSTM 到Transformer的综述

前情提要:文本大量参照了以下的博客,本文创作的初衷是为了分享博主自己的学习和理解。对于刚开始接触NLP的同学来说,可以结合唐宇迪老师的B站视频【【NLP精华版教程】强推!不愧是的最完整的NLP教程和学习路线图从原理构成开始学&a…

互斥锁/读写锁(Linux)

一、互斥锁 临界资源概念: 不能同时访问的资源,比如写文件,只能由一个线程写,同时写会写乱。 比如外设打印机,打印的时候只能由一个程序使用。 外设基本上都是不能共享的资源。 生活中比如卫生间,同一…

YOLOv8加入AIFI模块,附带项目源码链接

YOLOv8" 是一个新一代的对象检测框架,属于YOLO(You Only Look Once)系列的最新版本。YOLOv8中提及的AIFI(Attention-based Intrascale Feature Interaction)模块是一种用于增强对象检测性能的机制,它是…

Windows 上面双网卡网络,配置为优先IPV4

多数网络游戏加速器是不支持IPV6的,即便支持IPV6也不好用,原因是IPV6在大陆并不是普及的状态,很多资源是没有的。 所以本文会教大家怎么让双IP栈的用户,怎么配置优先适用IPV4,并且IPV6也还可以用。 跟着我的步骤来&am…

Docker 和 Kubernetes:容器化时代的崛起与演变

在过去的十年间,容器化技术彻底改变了软件开发和部署的面貌。 Docker 的登场无疑是这场变革的催化剂,它将应用和服务的打包、分发、部署流程标准化,让开发者的生活变得更加简单。 紧随其后,Kubernetes 作为容器编排的领军者&#…

网络安全态势感知平台概述

网络安全态势感知平台 文章目录 网络安全态势感知平台网络安全态势感知平台是什么一、网络安全态势感知平台是什么?二、网络安全态势感知很重要三、网络安全态势感知基础功能以某公司态势平台产品为例具体功能有以下: 网络安全态势感知平台是什么 网络安…

vue3中几种封装让后端传参请求方式

1、post请求,但是后端参数不是对象&#xff0c;是一个单参 后端 /// <summary> /// 获取项目服务详情 /// </summary> /// <param name"id"></param> /// <returns></returns> /// &l…

虹科分享丨汽车技术的未来:Netropy如何测试和确保汽车以太网的性能

来源&#xff1a;艾特保IT 虹科分享丨汽车技术的未来&#xff1a;Netropy如何测试和确保汽车以太网的性能 原文链接&#xff1a;https://mp.weixin.qq.com/s/G8wihrzqpJJOx5i0o63fkA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车以太网 #车载网络 #Netropy …

STM32第一节——初识STM32

1 硬件介绍 1.1 硬件平台 配套硬件&#xff1a;以野火的STM32 F1霸道开发板为平台&#xff0c;若用的是别的开发板&#xff0c;可自己进行移植。 1.2 什么是STM32 STM32是由意法半导体&#xff08;STMicroelectronics&#xff09;公司推出的一系列32位的ARM Cortex-M微控制…

D. Gargari and Permutations

很好玩的一道类似LCS的DP 问题 定义dp(i) 为考虑最后一个字符串&#xff0c;且选择a&#xff08;i&#xff09;得到的最大LIS值 然后枚举所有小于i的位置&#xff0c;可以更新的条件是 所有的字符串中都有a[j]<a[i] 这个用map一处理就好了 #include<bits/stdc.h> usi…

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

PHP个人笔试题

笔试题集合 以下答案仅供参考&#xff0c;答案不断完善中~~~ 查出下属薪资大于主管的数据&#xff08;pid代表自己主观id&#xff09; idpidnamesalary10小明400020小红500031小王900042小刚300054小鱼5000 select m.* from salary m , salary l where m.pid l.id and m.sal…

Type-C平板接口协议芯片介绍,实现单C口充放电功能

在现代平板电脑中&#xff0c;Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口&#xff0c;Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是&#xff0c;在使用Type-C接口的平板电脑上&#xff0c;如何实现单C口充电、放电和USB2.0数据传…

qt学习:tcp区分保存多个客户端

在前面文掌的tcp客服端服务端进行更改 qt学习&#xff1a;Network网络类tcp客户端tcp服务端-CSDN博客https://blog.csdn.net/weixin_59669309/article/details/135842933?spm1001.2014.3001.5501前面的服务端每次有新的客户端连接&#xff0c;就会覆盖掉原来的指针&#xff0…

uniCloud ---- 云存储

目录 概念 1. web界面 2. 客户端API或组件上传 API 自定义样式 选择指定后缀图片&#xff0c;且限制选择个数 手动上传 应用 3. 云函数上传文件到云存储 uni.chooseImage(OBJECT) uni.previewImage(OBJECT) uploadFile(Object object) 请求参数 响应参数 应用 概念…

Web11--Bootstrap

1、Bootstrap入门 1.1 Bootstrap简介 官网&#xff1a;Bootstrap中文网 1.2 Bootstrap引入 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"…

服务器是什么?(四种服务器类型)

服务器 服务器定义广义: 专门给其他机器提供服务的计算机。狭义:一台高性能的计算机&#xff0c;通过网络提供外部计算机一些业务服务 个人PC内存大概8G&#xff0c;服务器内存128G起步 服务器是什么 服务器指的是 网络中能对其他机器提供某些服务的计算机系统 &#xff0c;相对…