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
您可能感兴趣
- sysbenchmysql性能跑分(MySQL性能压力基准测试工具sysbench的使用简介)
- mysql读写分离怎么做(MySQL读写分离,写完读不到问题如何解决)
- mysql 死锁查询(MySQL slave 延迟一列 外键检查和自增加锁)
- mysql怎么删除用户操作(解决mysql删除用户 bug的问题)
- 设置mysql字符集语句(MySQL修改字符集的实战教程)
- mysqlupdate原理(MySQL UPDATE 语句的非标准实现代码)
- mysql索引面试总结(Mysql数据库索引面试题程序员基础技能)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- mysql存储引擎的创建与修改(关于MySQL Memory存储引擎的相关知识)
- mysql8.0.12安装教程图解(MySql8.023安装过程图文详解首次安装)
- navicat连接mysql报1045(解决Navicat for MySQL 连接 MySQL 报2005错误的问题)
- mysql从入门到实践万字详解(mysql基础知识扫盲)
- mysql什么是慢查询(MySQL慢查询的坑)
- mysql导出数据的方法
- linuxmysql怎么设置root密码(Linux mysql-5.6如何实现重置root密码)
- python连接到本地的mysql数据库(Python实现连接MySql数据库及增删改查操作详解)
- 不可分鸽是什么梗(不可分鸽是什么梗)
- 古代的鸽子是爱情的象征,并非和平的使者(古代的鸽子是爱情的象征)
- 一课译词 放鸽子(一课译词放鸽子)
- 终于来了,淘宝更改账户名测试中,快去看看你能不能修改(淘宝更改账户名测试中)
- 淘宝支持账号名修改,网友 终于可以 重新做人 了(淘宝支持账号名修改)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
热门推荐
- python 正则表达式在代码里的使用(python中正则表达式与模式匹配)
- vue 修改后刷新(Vue使用三种方法刷新页面)
- mysql的默认隔离级别(再有人问你MySQL的隔离级别是什么,就把这篇文章发给他!)
- iisweb服务器的启动与配置(win7 iis配置怎么配置 Win7配置IIS服务器图文教程)
- h5禁用返回键(可能这些是你想要的H5软键盘兼容方案小结)
- python实现列表删除重复元素(Python代码实现删除一个list里面重复元素的方法)
- VS不生成.vhost.exe和.pdb文件
- jquery 实现对联广告
- js里咋样设置css里面的属性(css不常见属性之pointer-events的使用方法)
- 如何用thinkphp框架来写一个网站(php tpl模板引擎定义与使用示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9