2014-04-16 75 views
1

我有一張表列出了系統許可證,每個系統(過期的和現有的)的多個許可證。我只在這個問題上發佈了兩列,因爲它們是唯一重要的。每個唯一列值獲取一條記錄

| id | systemid | 
| 1 |  1 | 
| 2 |  1 | 
| 3 |  2 | 
| 4 |  2 | 
| 5 |  3 | 
| 6 |  3 | 

我需要的2,4和6

我需要收集1個結果爲每個SYSTEMID的ID來獲得的行和它是最早的(最小的)記錄,所以在這種情況下,具有最高ID的記錄。我一直在探索GROUP BY,ORDER BYLIMIT,但我沒有產生我追求的結果。如何爲一列中的每個單獨值收集一條記錄並確保它是最高ID的記錄?

我知道這是錯的,但它就是我目前在主演:

SELECT * FROM licences GROUP BY systemid ORDER BY id DESC LIMIT 1

+1

'select max(id),systemid from licenseid by systemid'也許? – Chrisky

+1

Chrisky現貨,你應該添加它作爲答案:) – Arbiter

+0

這裏的箭頭不會自己點擊... – Chrisky

回答

1

SELECT max(id), systemid FROM table GROUP BY systemid

注意,用GROUP BY,您選擇必須是在GROUP BY子句中或包裹在一個聚集功能,如最大值,最小值,總和或平均值的所有列。

+0

這個作品,謝謝!我不得不使用'MAX(id)作爲id'來獲取我之後的輸出,謝謝!我可以在2分鐘內接受。 – Arbiter

1

這將抓住每SYSTEMID最高的ID。

SELECT MAX(id), systemid 
FROM ... 
GROUP BY systemid 
+0

這個作品,謝謝 – Arbiter