面试题小结SQL

面试题小结SQL

关于我今天面试初级java程序员,发现面试题好多不会。所以在此总结一下相关面试题并且
在这里插入图片描述
这道数据库题涉及到多表联合查询,并且还有一个重点在于需要数学和语文的成绩进行对比。如何拿到对应数学和语文的成绩,成了卡住我的点。一下是我的解题思路:

  • 首先先要把语文个数学两个成绩存放在两个不同的表里以便作为成绩高低的对比
  • 其次就是需要用到“别名”对查询出来的结果进行‘保存’,因为该题需要的是写一个SQL 语句来实现
下面是解题过程:
  • 我们可以分成几步,先把简单的查询查出来作为一张表。我们以下查询可以作为语文成绩表(chinese),数学成绩表(math)
	
	//查询出语文成绩id
	select cid from course where name='语文'//查询出数学成绩id
	select cid from course where name='数学'//根据查出的语文id查出语文成绩和对应的学生id
	select sid,score from sc where cid = (select cid from course where name='语文');
	
	//根据查出的数学id查出语文成绩和对应的学生id
	select sid,score from sc where cid =(select cid from course where name='数学')
	
'''
+ 接下来的思路我们用上面查询出的两张表加上原本的学生表来完成该题的查询

```sql
	//大致查询逻辑是这样的
	SELECT 
		sid sname
	FROM 
		chineseSc,
		math,
		student 
	WHERE
		student.id=chinese.id 
	AND 
		chinese.id=math.id 
	AND 
		chinese.score>math.score;
	
	//我们用上面查询出来的语句替换实现它
	SELECT 
		student.sid,
		student.sname 
	FROM
		student,
		(select*from sc where cid =(select cid from course where name='语文'))as chineseSc,
		(select*from sc where cid =(select cid from course where name='数学'))as math 
	WHERE
		student.sid=chineseSc.sid 
	AND 
		chineseSc.sid=math.sid 
	AND
		chineseSc.score>math.score;
'''

<font face="黑体" color=red size=5>提醒注意标点符号一定要使用正确,否则你的眼睛和你的头发将会不堪重负!!!!!</font>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值