SQL select语句比另一条要多

时间:2018-08-04 21:31:39

标签: sql

enter image description here

我想要的是返回名称A,因为A是唯一一个得分高于Geo的英语。

基本问题是选择英语得分>地理得分

的所有学生

1 个答案:

答案 0 :(得分:3)

您可以使用group byhaving进行此操作:

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,例如:

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;