2017-07-24 128 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