如何编写SQL语句查询course_1分数高于course_2的学生记录
正确SQL查询写法
你原有代码首先需要修正字段名:学生表和成绩表的关联字段是student_id,不是你写的SNO。
要实现course1分数高于course2的筛选,核心逻辑是把成绩表关联两次,分别取出两门课程的成绩再做大小比较,参考写法如下:
SELECT s.student_id, s.name, s.age, sc1.score course_1_score, sc2.score course_2_score FROM student s INNER JOIN score_sheet sc1 ON s.student_id = sc1.student_id AND sc1.course_id = 'c001' -- 对应course_1的课程ID INNER JOIN score_sheet sc2 ON s.student_id = sc2.student_id AND sc2.course_id = 'c002' -- 对应course_2的课程ID WHERE sc1.score > sc2.score
如果需要通过课程名称而非固定ID匹配,可以关联课程表做筛选:
SELECT s.student_id, s.name, s.age, sc1.score math_score, sc2.score art_score FROM student s INNER JOIN score_sheet sc1 ON s.student_id = sc1.student_id INNER JOIN course c1 ON sc1.course_id = c1.course_id AND c1.name = 'Math' INNER JOIN score_sheet sc2 ON s.student_id = sc2.student_id INNER JOIN course c2 ON sc2.course_id = c2.course_id AND c2.name = 'Art' WHERE sc1.score > sc2.score
以上两种写法在你提供的样例数据中运行,都会返回唯一符合条件的Claire的记录。
内容的提问来源于stack exchange,提问作者Afiq Rosli
相关产品推荐
相关产品推荐

