为了从两个表中获取数据,我们有时会用JOIN将两个表连接起来。通常有以下几种连接方式:
JOIN or INNER JOIN(内连接) : 这两个是相同的,要求两边表同时有对应的数据,返回行,任何一边缺失数据就不显示。
LEFT JOIN(左外连接):即使右边的表中没有匹配,也从左表返回所有的行。
RIGHT JOIN(右外连接):即使左边的表中没有匹配,也从右表返回所有的行。
FULL JOIN(全外连接):只要其中一个表中存在匹配就返回行。
如例,有grade表(课程号sn,分数scroe,学号id),student表(学号id,学生姓名name),要查询学生的姓名和成绩
当JOIN或是INNER JOIN时,
SELECT s.name,g.sn,g.score from student as s join grade as g on s.id = g.id
或者
SELECT s.name,g.sn,g.score from student as s inner join grade as g on s.id = g.id
结果集如下
当LEFT JOIN时,
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id
结果集如下
当RIGHT JOIN时,
SELECT s.name,g.sn,g.score from student as s right join grade as g on s.id = g.id
结果集如下
当FULL JOIN时,
SELECT s.name,g.sn,g.score from student as s full join grade as g on s.id = g.id
结果集如下
注意,两个表连接时用on,在使用left join(right join或full join)时,on与where的区别是:
on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录
where条件是在临时表生成好后再对临时表进行过滤的条件,这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。如下图,
on条件为黄色部分
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id and score =90
SELECT s.name,g.sn,g.score from student as s left join grade as g on s.id = g.id where score =90
下面看下SQL中join的各种用法
1.自然连接(natural join)
自然连接将表中具有相同名称的列自动进行匹配,自然连接不必指定任何同等连接条件也不能认为指定哪些列需要被匹配,自然连接得到的结果表中,两表中名称相同的列只出现一次。
select * from employee natural join department;
2.内连接(inner join):产生的结果是A和B的交集(相同列里面的相同值)
内连接查询能将左表和右表中能关联起来的数据连接后返回,返回的结果就是两个表中所有相匹配的数据。
select * from TableA as A inner join TableB B on A.PK = B.PK; select * from TableA as A inner join TableB B on A.PK > B.PK;
3.外连接(outer join)
内连接是要显示两张表的内存,而外连接不要求如此,外连接可以依据连接表保留左表,右表或全部表的行为而分为左外连接右外连接和全连接。
select * from TableA as A left(right/full) join TableB as B on A.PA = B.PK;
Full Join:产生的结果是A和B的并集(如果没有相同的值会用null作为值)
Left Join:产生表A的完全集,而B表中匹配的则有值(没有匹配的则以null值取代)
Right Join:产生表B的完全集,而A表中匹配的则有值(没有匹配的则以null值取代)
4.交叉连接(cross join)
又称笛卡尔连接,交叉连接返回两个集合的笛卡尔积。
select * from TableA cross join TableB;
参考链接:http://mazhuang.org/2017/09/11/joins-in-sql/
总结
以上所述是小编给大家介绍的SQL语句中不同的连接join及join的用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
- 群星.2001-水底乐园(刘以达作品集)【正东】【WAV+CUE】
- 贵族音乐《颂钵减压SPA 空灵疗心音乐精选》[FLAC/分轨][157.53MB]
- 群星《穿越西藏音乐经典》HIFI珍藏限量版 [APE+CUE][374M]
- 李克勤《极品之选》 环球SACD天碟系列 2002[DFF][2.1G]
- 群星《飞图超白金精选1-8》8CD[WAV+CUE]
- 离天边最近的声音-旦增尼玛《藏乡情HQCD》WAV
- 群星1990-怀旧好歌·老歌珍藏[台湾版][WAV+CUE]
- 容祖儿.2006-TEN.MOST.WANTED(加歌版)【英皇娱乐】【WAV+CUE】
- 林一峰.2022-OffTracks(EP)【LYFMUSIC】【FLAC分轨】
- 群星.2001-水底乐园(刘以达作品集)【正东】【WAV+CUE】
- 群星1990-怀旧粵语金曲珍藏版之三[日本版][WAV+CUE]
- 奔驰汽车音乐圣经《醇声典范[白金嗓子]男极声》[正版CD低速原抓WAV+CUE]
- 痛仰乐队.2000-这是个问题【京文】【WAV+CUE】
- 贵族音乐《迪士尼音乐 宝宝睡眠钢琴 古典竖琴摇篮曲》[320K/MP3][165.11BB]
- 贵族音乐《迪士尼音乐 宝宝睡眠钢琴 古典竖琴摇篮曲》[FLAC/分轨][195.67MB]