MYSQL多表联查on和where的区别

目录

一、背景

二、探究

2.1、统计每个班级中女生的数量

错误的写法

查询结果

正确的写法

查询结果

2.2、只统计"一班"的学生数量

错误的写法

查询结果

正确的写法

查询结果

三、总结


一、背景

在一次对数据进行统计的时候,需要对两张表进行关联,类似于这样的语句a left join b on a.id = b.id where b.name = xx。发现最终的结果和预期不一致,汇总之后的数据变少了。

一开始还比较费解,后面回过神来才发现,犯了一个低级的错误,就是在使用left join时过滤条件放到on后面还是where后面是有区别的,如果没有搞清楚他们的区别,连表汇总的结果就会变少或者变多。

二、探究

student表

classes表

2.1、统计每个班级中女生的数量

错误的写法

select a.name, count(b.name) as num from classes a left join students b
on a.id = b.class_id
where b.gender = 'F'
group by a.name

查询结果

正确的写法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id and b.gender = 'F'
group by a.name

查询结果

2.2、只统计"一班"的学生数量

错误的写法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id and a.name = '一班'
group by a.name 

查询结果

正确的写法

select a.name, count(b.name) as num
from classes a left join students b
on a.id = b.class_id
where a.name = '一班'
group by a.name 

查询结果

问题一错误的原因:由于在where条件中对右表限制,导致数据缺失(四班应该有个为0的结果)。

问题二错误的原因:由于在on条件中对左表限制,导致数据多余(其他班的结果也出来了,还是错的)。on 后跟关联表(从表)的过滤条件,如果再加筛选条件只针对关联表!

on 后跟关联表(从表)的过滤条件,where 后跟主表或临时表的筛选条件(左连接为例,主表的数据都会查询到,所以临时表中必定包含主表所有的字段,需要给主表加什么筛选条件,直接给临时表加效果相同) 。

三、总结

通过上面的问题现象和分析,可以得出了结论:在left join语句中,左表过滤必须放where条件中,右表过滤必须放on条件中,这样结果才能不多不少,刚刚好。

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

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

相关文章

spring技术体系的演进史

spring 最开始使用 spring 的时候,发现这个特别好用,最主要是把那些对象创建之前通过关键字 new 创建的方式把那些交给 spring ioc 容器来处理,其中 spring 还是使用了工厂模式来创建对应的对象。 然而这个时候需要自己写一堆配置&#xff…

SpringBoot内容协商(简单使用、源码解读、默认Converters、自定义Converters)

目录 1. 内容协商1.1 简单使用1.2 源码解读1.3 WebMvcAutoConfiguration提供几种默认HttpMessageConverters1.4 自定义HttpMessageConverter支持yaml格式输出 1. 内容协商 1.1 简单使用 一套系统适配多端数据返回 基于请求头内容协商:(默认开启&#x…

C语言--分段函数

要求&#xff1a;写一个程序&#xff0c;输入x的值&#xff0c;输出y的值 思路&#xff1a;定义两个变量&#xff0c;一个y&#xff0c;一个x&#xff0c;当x<1时&#xff0c;yx&#xff0c;当x>1&&x<10&#xff0c;y2x-1&#xff0c;当x>10,y3x-11.用一个…

Linux 服务器监控

服务器几乎与任何 IT 基础设施密不可分&#xff0c;Linux 是服务器兼容性最强的开源操作系统&#xff0c;因为它具有灵活性、一致性和安全性。大多数 Linux 服务器都设置了以下 Linux 操作系统的任何变体&#xff1a;Red Hat Enterprise Linux &#xff08;RHEL&#xff09;、D…

Linux Shell和权限

目录 Shell命令及运行原理 权限 1.文件基本属性 2.文件权限值的表示方法 3.文件访问权限的相关设置方法 3.(1)chmod 组名修改 3.(2)chmod 二进制修改 3.(3)chown 3.(4)chgrp 3.(5)umask 4.目录权限 Shell命令及运行原理 Linux的操作系统&#xff0c;狭义上是…

看看顶级外贸业务员是如何跟进客户的?

许多外贸业务员&#xff0c;都碰到过客户跟进上的困难。那到底外贸业务员如何跟进客户&#xff0c;才能越跟越近&#xff0c;最终成交呢&#xff1f;本篇文章设定了几个客户回复的场景&#xff0c;看看顶尖销售都是怎么应对的吧&#xff1f; 一 客户说暂时没有需求 1.问清楚客…

案例研究|腾讯音乐娱乐集团与JumpServer共探安全运维审计解决方案

近年来&#xff0c;得益于人民消费水平的提升以及版权意识的加强&#xff0c;用户付费意愿和在线用户数量持续增长&#xff0c;中国在线音乐市场呈现出稳定增长的发展态势。随着腾讯音乐于2018年12月上市&#xff0c;进一步推动了中国在线音乐市场的发展。 腾讯音乐娱乐集团&a…

数据可视化:地图

1.基础地图的使用 如何添加颜色表示层级 代码实现 """基础地图的使用 """ from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京市", 9),("上海市…

WebGL:基础练习 / 简单学习 / demo / canvas3D

一、前置内容 canvas&#xff1a;理解canvas / 基础使用 / 实用demo-CSDN博客 WebGL&#xff1a;开始学习 / 理解 WebGL / WebGL 需要掌握哪些知识 / 应用领域 / 前端值得学WebGL吗_webgl培训-CSDN博客 二、在线运行HTML 用来运行WebGL代码&#xff0c;粘贴--运行&#xff…

LangChain+LLM实战---Midjourney(v5.1) Prompt深度剖析

原文&#xff1a;Anatomy of Midjourney Promps: In-Depth Study for effective Prompting Strategies — V5.1 examples 作者&#xff1a;Michael King 你是否曾经发现自己盯着Midjourney的空白画布&#xff0c;手指悬停在键盘上&#xff0c;让我问自己&#xff1a;“我应该…

前端面试题之CSS篇

1、css选择器及其优先级 标签选择器: 1类选择器、属性选择器、伪类选择器&#xff1a;10id选择器&#xff1a;100内联选择器&#xff08;style“”&#xff09;&#xff1a;1000!important&#xff1a;10000 2、display的属性值及其作用 属性值作用none元素不显示&#xff0c…

使用VNC链接远程桌面

一、本地VNC客户端 本地主要需要一个VNC客户端&#xff0c;用来远程连接服务器端的VNC&#xff08;在不安装Web版本VNC情况下&#xff09;。VNC客户端下载地址&#xff1a; VNC客户端下载 二、安装Xfce桌面环境 在远程服务器控制台中安装Xfce桌面&#xff08;这个桌面环境比…

CSC公派遭美德拒签|计算机专业老师终赴意大利都灵理工大学访学

C老师拟申报CSC访学项目&#xff0c;希望先申请美国&#xff0c;并做好了一旦拒签再申请其它国家的心理准备。我们先用普渡大学的邀请函助其申报CSC&#xff0c;并顺利获批&#xff0c;但不出所料地被美国拒签了&#xff1b;很快又申请到德国奥芬堡应用技术大学&#xff0c;但不…

【Linux】简单部署Yearning并结合内网穿透实现公网访问

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单&#xff0c;高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开…

Jakarta-JVM篇

文章目录 一.前言1. 1 JVM-堆常用调参1.2 JVM-方法区常用参数1.3 JVM-codeCache 二.JVM内存结构三. 对象创建四. JVM垃圾回收算法4.1 可达性分析算法4.1.1 对象引用4.1.2 回收方法区. 4.2 分代回收4.3 标记清除4.4 标记复制4.5 标记整理 五.垃圾回收器5.1 根节点枚举5.2 安全点…

打造高效运营底座,极智嘉一体化软件系统彰显科技威能

在仓储成本和物流需求日益增加的今天&#xff0c;创新且高效的物流机器人解决方案能够显著提升物流运营效率&#xff0c;降低物流成本&#xff0c;实现智能化、精益化、一体化的物流管理。全球仓储机器人引领者极智嘉(Geek)以「一套系统&#xff0c;天生全能」为准则&#xff0…

python脚本-网页爬虫获取网页图片

python脚本-网页爬虫获取网页图片 代码 import requests import re import time url"http://10.9.47.154/python-spider/" # 爬取网站的url headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …

亚马逊云科技大语言模型下的六大创新应用功能

目录 前言 亚马逊云科技的AI创新应用 ​编辑 Amazon CodeWhisperer Amazon CodeWhisperer产品的优势 更快地完成更多工作 自信地进行编码 增强代码安全性 使用收藏夹工具 自定义 CodeWhisperer 以获得更好的建议 如何使用Amazon CodeWhisperer 步骤 1 步骤 2 具体…

Flink源码解析八之任务调度和负载均衡

源码概览 jobmanager scheduler:这部分与 Flink 的任务调度有关。 CoLocationConstraint:这是一个约束类,用于确保某些算子的不同子任务在同一个 TaskManager 上运行。这通常用于状态共享或算子链的情况。CoLocationGroup & CoLocationGroupImpl:这些与 CoLocationCon…

【漏洞复现】IIS_7.o7.5解析漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 1.1、漏洞描述 漏洞原理&#xff1a; cgi.fix_path1 1.png/.php该…