2017-07-24 126 views
0

我的CMS將其過去版本的頁面存儲在同一個表中。我想通過productID提取每條記錄的最新版本。適用於:爲每個組選擇具有最高值的整個記錄​​

productID version name text price etc etc 
ABC123  1.2 Fred Stuff 2.34 ... ... 
DEF456  0.3 Jill Other 1.99 ... ... 
ABC123  1.3 Fred Stuff 2.99 ... ... 
DEF456  0.4 Jill Other 2.50 ... ... 
ABC123  1.4 Fred Stuff 3.45 ... ... 

我需要得到:

ABC123  1.4 Fred Stuff 3.45 ... ... 
DEF456  0.4 Jill Other 2.50 ... ... 

(任意順序)。我在

select distinct(version),* group by productID,max(version) from table; 

上進行了試驗,但我無法弄清楚如何去做。 「選擇最高」的其他答案都是關於計數和總和;我只需要整個記錄。

+0

https://stackoverflow.com/questions/4510185/select-max-value-of-each-group –

+0

https://stackoverflow.com/questions/12102200/get-records-with-max-值換各基團的的分組的-SQL結果 –

回答

0

跨應用將工作的偉大,除了這是MySQL的...所以

你需要生成一組數據,其中包含了表,你有興趣的最大值的邏輯鍵。然後加入回到底座。

因此SELECT max(version) mv, productID from table group by productID爲我們獲得每個productID的最大版本,然後我們可以將它加入基本集以獲取所需的其他數據。

SELECT * 
FROM Table A 
INNER JOIN (SELECT max(version) mv, productID 
      FROM table 
      GROUP BY productID) B 
on A.ProductID= B.ProductID 
and A.Version = B.MV