【问题标题】:SQL select values based on other two columnsSQL 根据其他两列选择值
【发布时间】:2021-11-12 08:51:54
【问题描述】:

如果我有这样的表:

Name Subject Score
Tom Math 90
Tom Physics 70
Jerry Math 70
Jerry Physics 90
Bob Math 80
Bob Physics 80

如何编写 SQL 代码来找出数学胜于物理的名字?

输出应该是:

Name
Tom

【问题讨论】:

  • 你应该。编辑您的问题并展示您的尝试。

标签: sql select


【解决方案1】:

您可以在db-fiddle 中使用数据查看我的解决方案。

简而言之,您可以申请以下查询

SELECT 
      s1.Name
      FROM TableName s1, TableName s2
WHERE s1.Name = s2.Name 
AND s1.Subject = 'Math' AND s2.Subject = 'Physics' 
AND s1.Score > s2.Score 

【讨论】:

    【解决方案2】:

    很多方法。一种方法是说你想知道哪些名字有数学,哪些人的物理科目分数较低,所以

    select *
    from t
    where subject='maths' and exists (
      select * from t t2 where t2.name=t.name 
        and t2.subject='physics'
        and t2.score < t.score
    )
    

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        猜你喜欢
        • 2022-07-06
        • 2018-09-24
        • 1970-01-01
        • 2022-09-30
        • 2020-03-07
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 2021-07-11
        相关资源
        最近更新 更多