视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
浅谈sql连接查询的区别inner,left,right,full
2020-11-09 20:44:30 责编:小采
文档


--table1 表

ID NAME QQ PHONE
1 秦云 10102800 13500000
2 在路上 10378 13600000
3 LEO 10000 13900000
4 秦云 0241458 545512

--table2 表

ID NAME sjsj gly
1 秦云 2004-01-01 00:00:00.000 李大伟
2 秦云 2005-01-01 00:00:00.000 马化腾
3 在路上 2005-01-01 00:00:00.000 马化腾
4 秦云 2005-01-01 00:00:00.000 李大伟
5 在路上 2005-01-01 00:00:00.000 李大伟

--inner join   只要是符合要求的就显示

select * from table1 t1 

inner join table2 t2 on t1.name=t2.name<br><br>--得到的结果

ID NAME QQ PHONE ID NAME sjsj gly
1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟
4 秦云 0241458 545512 1 秦云 2004-01-01 00:00:00.000 李大伟
1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾
4 秦云 0241458 545512 2 秦云 2005-01-01 00:00:00.000 马化腾
2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾
1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟
4 秦云 0241458 545512 4 秦云 2005-01-01 00:00:00.000 李大伟
2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟

--left join 以左表为主,会看到若右表有 关联字段重复,则 左边关联的字段信息翻倍。

select * from table1 t1 (1)

left join table2 t2 on t1.name=t2.name

与

select * from table2 t2 (2)

right join table1 t1 on t1.name=t2.name

结果相等,不过两表的顺序换一下而已。

 

 

(1)结果

ID NAME QQ PHONE ID NAME sjsj gly

1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟

1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾

1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟

2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾

2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟

3 LEO 10000 13900000 NULL NULL NULL NULL

4 秦云 0241458 545512 1 秦云 2004-01-01 00:00:00.000 李大伟

4 秦云 0241458 545512 2 秦云 2005-01-01 00:00:00.000 马化腾

4 秦云 0241458 545512 4 秦云 2005-01-01 00:00:00.000 李大伟

 

(2)结果

ID NAME sjsj gly ID NAME QQ PHONE

1 秦云 2004-01-01 00:00:00.000 李大伟 1 秦云 10102800 13500000

2 秦云 2005-01-01 00:00:00.000 马化腾 1 秦云 10102800 13500000

4 秦云 2005-01-01 00:00:00.000 李大伟 1 秦云 10102800 13500000

3 在路上 2005-01-01 00:00:00.000 马化腾 2 在路上 10378 13600000

5 在路上 2005-01-01 00:00:00.000 李大伟 2 在路上 10378 13600000

NULL NULL NULL NULL 3 LEO 10000 13900000

1 秦云 2004-01-01 00:00:00.000 李大伟 4 秦云 0241458 545512

2 秦云 2005-01-01 00:00:00.000 马化腾 4 秦云 0241458 545512

4 秦云 2005-01-01 00:00:00.000 李大伟 4 秦云 0241458 545512

--left join 已右表为主 ,与left 同理

select * from table1 t1 

right join table2 t2 on t1.name=t2.name

 

ID NAME QQ PHONE ID NAME sjsj gly

1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟

4 秦云 0241458 545512 1 秦云 2004-01-01 00:00:00.000 李大伟

1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾

4 秦云 0241458 545512 2 秦云 2005-01-01 00:00:00.000 马化腾

2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾

1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟

4 秦云 0241458 545512 4 秦云 2005-01-01 00:00:00.000 李大伟

2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟 

--full join  两表数据都取出来,不管是否符合

select * from table1 t1 

full join table2 t2 on t1.name=t2.name

 

结果

ID NAME QQ PHONE ID NAME sjsj gly

1 秦云 10102800 13500000 1 秦云 2004-01-01 00:00:00.000 李大伟

1 秦云 10102800 13500000 2 秦云 2005-01-01 00:00:00.000 马化腾

1 秦云 10102800 13500000 4 秦云 2005-01-01 00:00:00.000 李大伟

2 在路上 10378 13600000 3 在路上 2005-01-01 00:00:00.000 马化腾

2 在路上 10378 13600000 5 在路上 2005-01-01 00:00:00.000 李大伟

3 LEO 10000 13900000 NULL NULL NULL NULL

4 秦云 0241458 545512 1 秦云 2004-01-01 00:00:00.000 李大伟

4 秦云 0241458 545512 2 秦云 2005-01-01 00:00:00.000 马化腾

4 秦云 0241458 545512 4 秦云 2005-01-01 00:00:00.000 李大伟

下载本文
显示全文
专题