2016-12-23 22 views
1

我一直試圖按某個鍵來分組,但只有更高的值。 例如可以說這是我的數據Mysql GROUP通過一個鍵並選擇較高的值

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 
    1  52  James  0.5   0 
    3  65  Zeus  0.8   0.3 

I希望按鍵分組,但選擇屬於某個KEY的Value1較高的人。我不想用

WHERE Value1 > 0.4 

有一千個記錄和一個where語句不會幫助。我想知道是否有辦法在相關的KEY之間比較Value1或Value2,並在分組時選擇較高的值。

希望這是清楚的,並提前謝謝你。 :)

回答

1

首先查詢到拿到鑰匙和最大值

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 

ただ的休息!

+0

1.'key'保留。 2.如果具有相同值1的多行,您的查詢將返回所有這些行。我認爲只有頂部應該被退回。 – GurV

+0

@GurwinderSingh - 1.是「KEY」保留,「yourTable」也不是他的名字 - 我希望OP能處理這些問題。 2)OP需要說明,如果返回多於一行,由於規範沒有說明要做什麼,只要獲取第一個或頂部將導致他現在處理的相同問題,會發生什麼情況。 – Hogan

+0

謝謝!是的,我想到了扭曲,它的工作!再次感謝所有! – razerer