首页 > 解决方案 > SQL 根据其他两列选择值

问题描述

如果我有一张这样的桌子:

姓名 主题 分数
汤姆 数学 90
汤姆 物理 70
杰瑞 数学 70
杰瑞 物理 90
鲍勃 数学 80
鲍勃 物理 80

如何编写 SQL 代码来找到数学而不是物理做得更好的名字?

输出应该是:

姓名
汤姆

标签: sqlselect

解决方案


我会在表上加入两个查询,一个用于数学,一个用于物理:

SELECT m.name
FROM   (SELECT name, score
        FROM   mytable
        WHERE  subject = 'Math') m
JOIN   (SELECT name, score
        FROM   mytable
        WHERE  subject = 'Physics') p ON m.name = p.name AND m.score > p.score

推荐阅读