【SQL28】查询1课程比2课程成绩高的学生的信息及课程分数

有如下几张表:

Student
sid    sname      sage              sex
1      '赵雷'     '1990-01-01'      '男'
2      '钱电'     '1990-01-01'      '男'
3      '孙风'     '1990-01-01'      '男'
4      '李云'     '1990-01-01'      '男'
5      '周梅'     '1990-01-01'      '女'
6      '吴兰'     '1990-01-01'      '女'
7      '郑竹'     '1990-01-01'      '女'
8      '王菊'     '1990-01-01'      '女'
course
cid     cname       tid
1       '语文'      2
2       '数学'      1
3       '英语'      3
shc
sid     cid     score
1       1       80
1       2       90
1       3       99
2       1       70
2       2       60
2       3       80
3       1       80
3       2       80
3       3       80
4       1       50
4       2       30
4       3       20
5       1       76
5       2       87
6       1       31
6       3       34
7       2       89
7       3       98

查询1课程比2课程成绩高的学生的信息及课程分数?


解决:

SELECT *
  from (
        SELECT a.SId,a.score class1,b.score class2
          FROM (SELECT * from sc WHERE sc.CId = 1)as a
         inner join (SELECT * from sc WHERE sc.CId = 2)as b
            on a.SId = b.SId
         WHERE a.score > b.score
        )r
  left join student a
ON a.SId = r.SId
;
sid     class1  class2  sid(1)  sname     sage                    sex
2       70      60      2       钱电      1990-01-01 00:00:00     男
4       50      30      4       李云      1990-01-01 00:00:00     男

备注:建表和数据
create table student(sid int,sname varchar(10),sage datetime,sex varchar(10));
insert into student values(1, '赵雷', '1990-01-01', '男');
insert into student values(2, '钱电', '1990-01-01', '男');
insert into student values(3, '孙风', '1990-01-01', '男');
insert into student values(4, '李云', '1990-01-01', '男');
insert into student values(5, '周梅', '1990-01-01', '女');
insert into student values(6, '吴兰', '1990-01-01', '女');
insert into student values(7, '郑竹', '1990-01-01', '女');
insert into student values(8, '王菊', '1990-01-01', '女');

create table course(cid int,cname varchar(10),tid int);
insert into course values(1, '语文', 2);
insert into course values(2, '数学', 1);
insert into course values(3, '英语', 3);

create table shc(sid int,cid int,score int);
insert into shc values(1, 1, 80);
insert into shc values(1, 2, 90);
insert into shc values(1, 3, 99);
insert into shc values(2, 1, 70);
insert into shc values(2, 2, 60);
insert into shc values(2, 3, 80);
insert into shc values(3, 1, 80);
insert into shc values(3, 2, 80);
insert into shc values(3, 3, 80);
insert into shc values(4, 1, 50);
insert into shc values(4, 2, 30);
insert into shc values(4, 3, 20);
insert into shc values(5, 1, 76);
insert into shc values(5, 2, 87);
insert into shc values(6, 1, 31);
insert into shc values(6, 3, 34);
insert into shc values(7, 2, 89);
insert into shc values(7, 3, 98);

猜你喜欢

转载自blog.csdn.net/debimeng/article/details/104253446