mysql left join索引怎么使用(详解mysql 使用left join添加where条件的问题分析)
类别:数据库 浏览量:2536
时间:2021-10-23 10:50:30 mysql left join索引怎么使用
详解mysql 使用left join添加where条件的问题分析当前需求:
有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。
最开始的错误写法一:
|
SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id where g.isDel=0 and f.isDel=0 |
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
上边这样写左边表要是在右边表没有对应数据是查询不出来的,原因就是f.isDel=0
这个代码问题。
错误写法二:
|
SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and g.isDel=0 and f.isDel=0 |
这种写法g.isDel=0
是不会生效的,导致查询数据根本不对。
原因分析:
left join中关于where和on条件的几个知识点:
- 多表left join是会生成一张临时表,并返回给用户
- where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录
- on条件是对left join的右表进行条件过滤,但依然返回左表的所有行,右表中没有的补为NULL
- on条件中如果有对左表的限制条件,无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值。也就是说on中左表的限制条件只影响右表的匹配内容,不影响返回行数。
正确的写法:
|
SELECT g.*,f.* FROM groups g LEFT JOIN factor f ON f.groupId = g.id and f.isDel=0 where g.isDel=0 |
结论:
1.对左表添加条件限制需在where条件中添加,不能放到on后面
2.对右表添加条件限制需放到on后面,在where条件中添加会有数据行数差异出现问题。
到此这篇关于详解mysql 使用left join添加where条件的问题分析的文章就介绍到这了,更多相关mysql left join添加where内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/weixin_40300139/article/details/107662160
您可能感兴趣
- mysql数据库导入错误怎么处理(MySQL数据库导入导出数据之报错解答实例讲解)
- 分享mysql设计规范(MySQL 可扩展设计的基本原则)
- mysql命令输入行在哪(MySQL命令行操作时的编码问题详解)
- 深入理解mysql索引(MySQL中冗余和重复索引的区别说明)
- 如何清除mysql的binlog
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- mysql创建表的基本步骤(mysql中操作表常用的sql总结)
- mysql架构图(深入了解Mysql逻辑架构)
- mysql锁机制图解(详解mysql 中的锁结构)
- mysql为啥使用b+树(MySQL用B+树作为索引结构有什么好处)
- mysql语句性能分析(聊聊MySQL的COUNT*的性能)
- mysql查询时间格式化(MySQL时间格式化)
- mysql大表查询优化方案(mysql查询优化之100万条数据的一张表优化方案)
- mysql怎么做教材信息管理系统(python+mysql实现学生信息查询系统)
- 如何使java与sqlserver数据库连接(java连接mysql数据库 java连接sql server数据库)
- netcore连什么数据库好(.Net Core导入千万级数据至Mysql的步骤)
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
- 泪目 这位 刷屏 的英雄,是全椒人的骄傲(泪目这位刷屏)
- 人从众 火炎焱 全椒再现 正月十六走太平 的魅力(人从众火炎焱全椒再现)
- 官宣 全椒籍明星许海峰 奚秀兰 方芳 王璐瑶携手回家 走太平(全椒籍明星许海峰)
- 以前全椒人是怎么过冬的 满满都是回忆(以前全椒人是怎么过冬的)
热门推荐
- python图像变换教程(详解python-图像处理映射变换)
- tomcat处理乱码(Tomcat中catalina.bat设置为UTF-8控制台出现乱码)
- php 静态方法(PHP的静态方法与普通方法用法实例分析)
- 织梦二次安装教程(重新安装织梦系统以及转移空间、上传空间的方法)
- 网站服务器的带宽(网站服务器租用怎么选择合适的带宽和机器配置)
- javascript页面滚动窗口(javascript实现简单滚动窗口)
- 为什么asp.net网站第一次加载慢
- mysql慢日志查询会输出插入语句吗(MySQL三种日志有啥用?如何提高MySQL并发度?)
- ASP.NET合并两个相关联的DataTable
- mysql中json的支持(MySQL中json字段的操作方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9