侧边栏壁纸
博主头像
小鱼吃猫博客博主等级

你所热爱的,便是你的生活。

  • 累计撰写 115 篇文章
  • 累计创建 47 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

MySQL练习题50道:查询"01"课程比"02"课程成绩低的学生的信息及课程分数

小鱼吃猫
2023-11-02 / 0 评论 / 2 点赞 / 38 阅读 / 1513 字

背景

MySQL经典练习题及答案,常用SQL语句练习50题

题目描述

2、查询"01"课程比"02"课程成绩的学生的信息及课程分数

答案

s_ids_names_briths_sexscore_01score_02
01赵雷1990-01-018090
05周梅1991-12-017687

解题思路

这个题目两种解题思路和是一样的,只需要修改对应的 >< 即可。

第一种思路:自连接

SELECT
   s.*,
   a.s_score AS score_01,
   b.s_score AS score_02 
FROM
   score a,
   score b,
   student s 
WHERE
   a.s_id = b.s_id 
   AND a.c_id = '01' 
   AND b.c_id = '02' 
   AND a.s_score < b.s_score 
   AND s.s_id = a.s_id;

第二种思路:长表变宽表

SELECT stu.*,sc.score_01,sc.score_02
FROM student stu INNER JOIN
(SELECT
   sc.s_id,
   max( CASE WHEN sc.c_id = '01' THEN s_score END ) AS score_01,
   max( CASE WHEN sc.c_id = '02' THEN s_score END ) AS score_02,
   max( CASE WHEN sc.c_id = '03' THEN s_score END ) AS score_03 
FROM
   score sc 
GROUP BY
   s_id) sc
   ON stu.s_id=sc.s_id
   AND sc.score_01 < sc.score_02
2

评论区