比较行级别的标记字段

时间:2017-09-21 17:52:00

标签: mysql

我有来自TableA的以下数据集

S.No  StudentID      Marks  Description  SubjectID
1             1        50   Science      1
2             1        30   Mathematics  2
3             2        25   Science      1
4             2        25   Mathematics  2

我想运行一个查询并比较科学和数学之间的分数,并让那些得分高于数学的学生。而且我不应该看到在这两个科目中得分相同的学生。

输出:

S.No  StudentID      Marks  Description  SubjectID
1             1        50   Science      1
2             1        30   Mathematics  2

有人可以帮我查询一个示例。提前谢谢。

1 个答案:

答案 0 :(得分:1)

可以这么做,但有一个漫长的方式,但我相信会有另一个好的解决方案

select a.*
from demo a
join(
select t.StudentID
from demo t
join demo t1 on t.StudentID = t1.StudentID
and t.Description = 'Science'
and t1.Description = 'Mathematics'
and t.Marks > t1.Marks) b using(StudentID);

DEMO