mysql中join后on、where的区别
2024-08-31 02:06:26
SELECT * FROM A;
SELECT * FROM B;
以上是两张表的机构
SELECT * FROM A LEFT JOIN B ON A.id=b.a_id ;
语句一 : SELECT * FROM A LEFT JOIN B ON A.id=b.a_id AND A.id <3;
语句二: SELECT * FROM A LEFT JOIN B ON A.id=b.a_id WHERE B.id <3;
两个语句查询出来的结果是有差异的
sql查询的关键字顺序为 from -> where -> group by-> having ->order by
left join 是在from范围的所以先on条件筛选,然后再做left join
而where是在left join的结果之后再次筛选
语句一(等价于SELECT *FROM A LEFT JOIN (SELECT * FROM B WHERE B.id < 3) b2 ON A.id = b2.a_id;)
- 按照on后的条件筛选B.id<3
- 1中查询出的结果与A left join
语句二
- 先left join
- 然后再根据where条件再次筛选
使用注意事项:
- ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
- 对于主表的筛选条件应该放在where后面,不应该放在ON后面
- 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
- 对于关联表可以先做子查询再join
最新文章
- 如何向非技术人(程序猿)解释SQL注入?
- 翻译《Writing Idiomatic Python》(三):变量、字符串、列表
- Android 开发1000问笔记
- LeetCode2:Median of Two Sorted Arrays
- PowerDesigner15.1创建模型及生成带注释sql操作手册
- XManager介绍、安装、使用
- OC基础-day06
- HDU 1207
- java 反射 动态代理
- hdu 1806 Frequent values 线段树
- Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)
- Android Task 任务
- python数据类型——数字类型
- C++对C语言的变量检测增强
- log4j 日志限制大小 拆分成30个 不按日期分日志 按大小拆分 按日期产生
- pd 注意事项
- 初入pygame——贪吃蛇
- [Python设计模式] 第25章 联合国维护世界和平——中介者模式
- django2.0 官方中文文档地址
- Javascript版经典游戏之《扫雷》
热门文章
- 记一次Castle报错
- vs中如何添加库目录、包含目录以及依赖-----转
- Oracle安装部署之rhel 5.8下静默安装oracle11gr2
- 反面教材 构造构造 json 数据
- Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)
- B-tree indexes
- (object) array
- 安装中文输入法 ubuntu shortcut desktop
- Joint Stacks---hdu5818(栈模拟)
- Unity3D中使用Profiler精确定位性能热点的优化技巧