Mysql SQL行比较查询

Mysql SQL行比较查询,mysql,sql,qsqlquery,Mysql,Sql,Qsqlquery,我是SQL新手,试图对下面的结果表编写一个查询,以便列出学生Mary得分高于Tom的科目 Subject Student Teacher Score -------------------------------------------------- Maths Tom Anderson 67 Maths Mary Anders

我是SQL新手,试图对下面的结果表编写一个查询,以便列出学生Mary得分高于Tom的科目

    Subject        Student        Teacher        Score
    --------------------------------------------------
    Maths           Tom            Anderson        67
    Maths           Mary           Anderson        68
    English         Tom            Lewis           55
    English         Mary           Lewis           44
    French          Tom            Joubert         87
    French          Mary           Joubert         76
    Geography       Tom            Arnold          76
    Geography       Mary           Arnold          82
结果应如下表所示:

    Subject     
    ---------
    Maths
    Geography
我相信我应该使用join子句,但我无法使其起作用


谢谢

如果没有重复的分数,你可以通过聚合来实现这一点

select subject
from results
group by subject
having max(case when student = 'Mary' then score end) >
       max(case when student = 'Tom' then score else 0 end);

请注意,这将包括Mary有分数但Tom没有分数的主题。

您可以通过自联接将其概括如下:

    Subject     
    ---------
    Maths
    Geography

查询:

select a.Student As higher, b.Student as lower, a.Subject
  from score a
  join score b   ON a.Student <> b.Student
                AND a.Subject = b.Subject
                AND a.Score > b.Score
显然,您可以通过添加这个
WHERE
子句来过滤结果

where a.student ='Mary' AND b.student = 'Tom

此查询将为您提供所需的结果:

SELECT subject
FROM   scores
WHERE  student = 'Mary'
AND    ( subject
       , score
       ) IN (
            SELECT   subject
            ,        MAX( score )
            FROM     scores
            GROUP BY subject
            );