前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL - on和where的区别

SQL - on和where的区别

作者头像
雨临Lewis
发布2022-01-11 13:45:28
1.8K0
发布2022-01-11 13:45:28
举报
文章被收录于专栏:雨临Lewis的博客

on和where的区别

on和where后都表示查询条件,它们的区别如下:

1、on只能用于连接查询(内连接、外连接、交叉连接),在其他情况下使用on会报错,比如:

1

select* from test on id = 1; -- 报错,不能在普通查询里使用on,需要使用where

2、连接查询会产生一张中间表(临时表),on是在生成中间表时使用的条件;而where是在中间表生成后对中间表进行过滤使用的条件。比如:

test1表:

id

name

1

A

2

B

3

C

test2表:

id

name

1

E

3

F

1 2

select* from test1 left join test2 on test1.id = test2.id and test1.id = 1; select* from test1 left join test2 on test1.id = test2.id where test1.id = 1;

对于第一个语句,结果是:

id

name

id

name

1

A

1

E

2

B

null

null

3

C

null

null

对于第二个语句,结果是: |id|name|id|name| |:-:|:-:|:-:|:-:| |1|A|1|E|

3、外连接必须使用on,不然会报错。比如:

1 2

select* from test1 left join test2; -- 报错,没有使用on select* from test1 left join test2 where test1.id = test2.id; -- 报错,没有使用on

4、在内连接和交叉连接中,单独使用on和where对结果集没有区别。比如:

1 2

select* from test1 inner join test2 on test1.id = test2.id; select* from test1 inner join test2 where test1.id = test2.id;

以上语句都是在MySQL5.0的情况下测试的。

警告

本文最后更新于 October 14, 2017,文中内容可能已过时,请谨慎使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-142,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • on和where的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档