sql on where 区别

原创 2018年04月16日 16:37:49

关键字: on

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用left jion时,on和where条件的区别如下:

1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

假设有两张表:

表1:tab2

idsize
110
220
330

表2:tab2

sizename
10AAA
20BBB
20CCC

两条SQL:
1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’
2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’)

第一条SQL的过程:

 

1、中间表
on条件:
tab1.size = tab2.size
tab1.idtab1.sizetab2.sizetab2.name
11010AAA
22020BBB
22020CCC
330(null)(null)

 



2、再对中间表过滤
where 条件:
tab2.name=’AAA’
tab1.idtab1.sizetab2.sizetab2.name
11010AAA

 



 

第二条SQL的过程:

 

1、中间表
on条件:
tab1.size = tab2.size and tab2.name=’AAA’
(条件不为真也会返回左表中的记录)
tab1.idtab1.sizetab2.sizetab2.name
11010AAA
220(null)(null)
330(null)(null)

 

 

其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left或right表中的记录,full则具有left和right的特性的并集。 而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

sql where 和on 的区别

今天在论坛内看到一篇 面试题,是关于where 和on 的区别的,自己也不懂,在网上搜出一篇文章,加深自己的记忆转数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表...
  • qiqi860819
  • qiqi860819
  • 2009年09月23日 22:17
  • 17302

SQL左右连接中的on and和on where的区别

本文详细解释了SQL左右连接中的on and和on where的区别以及内连接inner join中on and 和on where的区别,全部是实例验证,不是空口胡说欢迎拍砖。...
  • xingzhemoluo
  • xingzhemoluo
  • 2014年09月29日 23:08
  • 9660

SQL中过滤条件放在on和where中的区别

今天接到蚂蚁金服的电面,问了sql中过滤条件放在on和where中的区别,当时满脑子是inner join,觉得没区别啊。后来才想起来,连接查询除了inner join还有right join,lef...
  • u013468917
  • u013468917
  • 2017年03月13日 23:03
  • 1847

ON、WHERE、HAVING的区别

ON 、WHERE、HAVING都能通过限制条件筛选数据,但他们的使用及其不同。下面我们来分析三者之间的区别。 1.       ON 和WHERE         所有的查询都回产生一个中间临时报表...
  • bruceyang2009lzu
  • bruceyang2009lzu
  • 2014年08月26日 13:41
  • 5099

SQL中join on条件和where条件的区别

SQL中join on条件和where条件的区别简单的说join on条件是对临时表横向(列级别)或纵向(行级别)数据的增加;而where条件则是对临时表中纵向(行级别)数据的过滤。 用代码说话 ...
  • zhuyucheng123
  • zhuyucheng123
  • 2016年11月21日 17:45
  • 899

on条件与where条件的区别

目录(?)[-] JOIN联表中ONWHERE后面跟条件的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 ...
  • xiepeifeng
  • xiepeifeng
  • 2013年11月21日 10:35
  • 1498

SQL语句Left join 中On和Where的用法区别

原文地址:点击打开链接 SQL语句如下:
  • xunzaosiyecao
  • xunzaosiyecao
  • 2014年04月13日 11:10
  • 1364

sql 条件加在 left join 与where后面的区别

做项目时遇到一问题,前台页面查询数据查不到,后台能查询到数据,百思不得其解,查询的sql如下: select *  from xxx poi left join yyy css on poi.OR...
  • yixiaotian1988
  • yixiaotian1988
  • 2012年08月28日 15:32
  • 9273

where、having之间的区别和用法

聚合函数是比较where、having 的关键。 开门见山。where、聚合函数、having 在from后面的执行顺序: where>聚合函数(sum,min,max,avg,cou...
  • JDJH1024
  • JDJH1024
  • 2017年08月03日 19:51
  • 12597

SQL语句 where 1=1 && where 1<>1

http://blog.csdn.net/fanyuna/article/details/5972437 where 1=1 最近看到很多sql里用到where 1=1,原来觉得这没用嘛,但是又想...
  • jqq_apple
  • jqq_apple
  • 2015年09月16日 14:51
  • 586
收藏助手
不良信息举报
您举报文章:sql on where 区别
举报原因:
原因补充:

(最多只允许输入30个字)