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;)

  1. 按照on后的条件筛选B.id<3
  2. 1中查询出的结果与A left join

语句二

  1. 先left join
  2. 然后再根据where条件再次筛选


使用注意事项:

  1. ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
  2. 对于主表的筛选条件应该放在where后面,不应该放在ON后面
  3. 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
  4. 对于关联表可以先做子查询再join

最新文章

  1. 如何向非技术人(程序猿)解释SQL注入?
  2. 翻译《Writing Idiomatic Python》(三):变量、字符串、列表
  3. Android 开发1000问笔记
  4. LeetCode2:Median of Two Sorted Arrays
  5. PowerDesigner15.1创建模型及生成带注释sql操作手册
  6. XManager介绍、安装、使用
  7. OC基础-day06
  8. HDU 1207
  9. java 反射 动态代理
  10. hdu 1806 Frequent values 线段树
  11. Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)
  12. Android Task 任务
  13. python数据类型——数字类型
  14. C++对C语言的变量检测增强
  15. log4j 日志限制大小 拆分成30个 不按日期分日志 按大小拆分 按日期产生
  16. pd 注意事项
  17. 初入pygame——贪吃蛇
  18. [Python设计模式] 第25章 联合国维护世界和平——中介者模式
  19. django2.0 官方中文文档地址
  20. Javascript版经典游戏之《扫雷》

热门文章

  1. 记一次Castle报错
  2. vs中如何添加库目录、包含目录以及依赖-----转
  3. Oracle安装部署之rhel 5.8下静默安装oracle11gr2
  4. 反面教材 构造构造 json 数据
  5. Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)
  6. B-tree indexes
  7. (object) array
  8. 安装中文输入法 ubuntu shortcut desktop
  9. Joint Stacks---hdu5818(栈模拟)
  10. Unity3D中使用Profiler精确定位性能热点的优化技巧