面试题小结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>