SQL比较同列数据的方法

问题描述

查询选修8105课程,且成绩高于其选修的8104的课程成绩的学生的学号和成绩(8105课程成绩),按成绩从高到低排序。

该题用到的数据表

在这里插入图片描述

分析问题

  1. 要求查询的对象一定是同时选修了81048105两门课的学生
  2. 同时课程8105的成绩大于8104的成绩
  3. 成绩最终按降序排列

解决问题

select sno,grade from sc
where cno='8105'	--最终需要获得的是‘8105’的成绩
and grade > 		--此处的grade是8105的成绩
(select grade from sc s2	--给sc表赋予另一个名字s2
where sc.sno=s2.sno and s2.cno='8104')	--通过s2.cno指定这里的子查询是获取与‘8105’同一个学生的‘8104’课程的成绩
order by grade desc;	--最后按成绩降序排列

总结

当需要比较同一列数据的不同数值时,可以通过给数据表“起别名”的方式再次指向同一类数据,并对其进行比较。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值