SQL select语句,其中一个课程多于另一个课程

SQL select语句,其中一个课程多于另一个课程,sql,Sql,我想要的是返回名字A,因为A是唯一一个英语成绩比Geo好的人 基本问题是选择英语成绩>地理成绩的所有学生您可以使用分组方式和拥有: select name from t where course in ('Eng', 'Geo') group by name having max(case when course = 'Eng' then score end) > max(case when course = 'Geo' then score end); 如果每个姓名/课程只有一个分数,

我想要的是返回名字A,因为A是唯一一个英语成绩比Geo好的人


基本问题是选择英语成绩>地理成绩的所有学生您可以使用
分组方式
拥有

select name
from t
where course in ('Eng', 'Geo')
group by name
having max(case when course = 'Eng' then score end) > max(case when course = 'Geo' then score end);
如果每个姓名/课程只有一个分数,您还可以使用
join
s,例如:

select teng.name
from t teng join
     t tgeo
     on teng.name = tgeo.name and
        teng.course = 'Eng' and
        tgeo.course = 'Geo' and
        teng.score > tgeo.score;

嗨,case是sql的函数吗?@KEVINBOSS
case
是SQL中条件表达式的关键字。