300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > left join后边跟on...and 和where...and的区别

left join后边跟on...and 和where...and的区别

时间:2024-03-11 22:50:48

相关推荐

left join后边跟on...and 和where...and的区别

文章目录

1. 建表2. on...and3. where...and

1. 建表

testA

CREATE TABLE testA (Id int ( 10 ) PRIMARY KEY,NAME VARCHAR ( 10 ))

INSERT INTO testAVALUES( 1, '小黄' );INSERT INTO testAVALUES( 2, '小绿' );INSERT INTO testAVALUES( 3, '小白' );INSERT INTO testAVALUES( 4, '小黑' );INSERT INTO testAVALUES( 5, '小花' );

testB

create TABLE testB (Id int ( 10 ) PRIMARY KEY,age int ( 10 ))

INSERT INTO testBVALUES( 1, 10 );INSERT INTO testBVALUES( 2, 11 );INSERT INTO testBVALUES( 3, 12 );INSERT INTO testBVALUES( 4, 13 );

两表如下:

2. on…and

先来一个常用的left join...on

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id

on后边加and a.id = 1

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id and a.id = 1 # 连接限制条件 a.id = 1

on后边加and b.id = 1

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id and b.id = 1

on后边加and b.age = a.id

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id and b.age = a.id

on 后的 and 有两表关联的字段:b.age 和 a.id,由于b.age 没有与 a.id相等的数据

所以a表全部显示,b表内容为空

3. where…and

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id and b.id > 1where b.id =2

以上sql分解一下:首先看

SELECT* FROMtestA aLEFT JOIN testB b ON a.id = b.id and b.id > 1

然后再加上where b.id =2

由此可见,on…and是连接。where…and 是过滤!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。