2012-11-16 37 views
2

的一個最高值我有一個MySQL表結構如下GROUP BY鍵和選擇上的另一個關鍵

+----+----------+---------+ 
| id | incident | message | 
+----+----------+---------+ 
| 1 | 3  | 1  | 
| 2 | 3  | 2  | 
| 3 | 5  | 1  | 
| 4 | 6  | 0  | 
| 5 | 6  | 4  | 
| 6 | 6  | 1  | 
| 7 | 7  | 1  | 
| 8 | 7  | 2  | 
+----+----------+---------+ 

這是簡化的數據,但它同樣的事情。

我想要的是GROUP BYincident但只獲取那些最高值爲message的行。

所以採取上述數據我想獲取以下id S:2, 3, 5, 8

我做了GROUP BY incident ORDER BY message聲明,但沒有奏效。我不太熟悉MySQL中的分組內容,所以如果你能在這裏幫助我,那將是非常棒的。

+0

'+ 1'用於添加樣品數據和所需的結果。 –

回答

3

查詢已子查詢這得到最大message每個incident。那麼它的結果是加入對theoriginal表本身基於兩個條件,即它與incidentmessage

SELECT a.* 
FROM tableName a 
     INNER JOIN 
     (
      SELECT incident, MAX(message) maxM 
      FROM tableName 
      GROUP BY incident 
     ) b ON a.incident = b.incident AND 
       a.message = b.maxM 
0

匹配試試這個:

SELECT * FROM 
(SELECT * FROM tablename ORDER BY message DESC) AS A 
GROUP BY incident