Mysql GROUP由一个键并选择更高的值

时间:2016-12-23 18:10:42

标签: mysql sql

我一直试图按某个键分组,但唯一更高的值。 例如,假设这是我的数据

    ID      KEY      Name      Value1     Value2
    1        52      James      0.5         0
    2        52      Amy        0.2         0.1
    3        65      Zeus       0.8         0.3
    4        65      Chris      0.1         0  

所以当我做的时候

    SELECT * FROM MyTable GROUP BY KEY

我得到的结果是

   ID      KEY      Name      Value1     Value2
   2        52      Amy        0.2         0.1
   4        65      Chris      0.1         0  

我想要的结果是,

    ID      KEY      Name      Value1     Value2
    1        52      James      0.5         0
    3        65      Zeus       0.8         0.3

我希望它按键分组,但选择属于特定KEY的Value1较高的人。我不想使用

   WHERE Value1 > 0.4

有数千条记录,而where语句无济于事。我想知道是否有一种方法可以比较相关KEY之间的Value1或Value2,并在分组时选择更高的值。

希望这很清楚,并提前感谢你。 :)

1 个答案:

答案 0 :(得分:2)

首先获取密钥和最大值的查询

SELECT KEY, MAX(Value1) as mValue1
FROM yourTable
GROUP BY KEY

现在加入以获取其余行

SELECT yourTable.*
FROM yourTable
JOIN (
  SELECT KEY, MAX(Value1) as mValue1
  FROM yourTable
  GROUP BY KEY
) AS sub on Sub.KEY = yourTable.KEY and Sub.mValue1 = yourTable.Value1

Ta da!