sqlserver两表查询关联_SQL之多表查询

一、表的关联

union 是将两个表合并为一,会除种

union all 是将两张表和二为一,不会除重

78af651d5c37fa106483c391399e02d4.png

ccc9084c5084ee421f42d8469954cf98.png

二、表的联结

联结方式:cross join、inner join、left join、right join、full join

c3a5e15d113c4e0c00b42f2f008546f3.png

区别在于,如需要左边表的信息全显示就是left join,右边表全显示就是right join,两表共同的选取就是inner join,其他联结方式应用较少,以下为例子,可以看出同样的2张表,取不同的联结方式,结果也不同

c880c2a0fc800db3b5017fdcaf9c0ac5.png

d966b5c4719d709e174022540de1355e.png

b1443c01cfc78a39fab294889569c3ab.png

三、表联结练习

1.查询所有学生的学号、姓名、选课数、总成绩

分析注意:由于这里用到student表的所有信息,所以是左查询left join,并且一个学生选了多门课程,所以对学号分组

b1443c01cfc78a39fab294889569c3ab.png

2.查询平均成绩大于85的所有学生学号、姓名、平均成绩

分析注意:这个同样用到了student表的所有信息,所以用left join,学号分组,对分组后的选取用having语句,而不是where选取单行!

ff986cddaea21bee19391b2b837299fe.png

3.查询学生的选课情况:学号、姓名、课程号、课程名称

分析注意:这里通过表score做为中间联结,取共同部分,3个表通过使用2个inner join...on...语句实现

046601582d48b5511009aac84ed36a23.png

四、case表达式

case 表达式用来进行多条件判断

case when...then...else...end

b40bef784f1c1689da648facac164559.png

五、练习注意

这里由于每个队打比赛有主场和客场的区别,所以球员名字会重复,注意用到distinct

335b16d9434fe30a499203e3d7f37355.png

这里注意由于用到了group by,所以再用到order by的时候一定要有group by里的所有元素,缺一个都不行!

00cfa7ee4836d4efbf09cf8f252873ad.png
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值