我有桌子'产品'其中有下面的列,我想要产品明智的最近2条记录(最长日期)
我的表:
ID Product Date
1 ProdA 2014-12-12
2 ProdB 2014-12-08
3 ProdC 2014-11-01
4 ProdD 2015-01-06
5 ProdE 2015-02-03
6 ProdA 2014-12-08
7 ProdB 2014-11-09
8 ProdC 2014-01-12
9 ProdD 2014-12-12
10 ProdE 2013-12-12
6 ProdA 2014-05-12
7 ProdB 2014-02-12
8 ProdC 2014-03-12
9 ProdD 2014-08-12
10 ProdE 2015-12-12
我使用的查询:
select count(ID)
from product
order by Date desc limit 3,
但是这会返回我所有产品概括的ID 10,5,4
但我想要的结果应该会给我3个产品明智的最高记录,如 productA , ProductB 等3个最高记录等等 那怎么可能
答案 0 :(得分:1)
问题不太明确,但您可以尝试以下方法:
select p.*
from `product` p
where ( select count(*)
from `product`
where `Product` = p.`Product` AND `Date` >= p.`Date`) < 3
order by p.`Product`
答案 1 :(得分:0)
这将为您提供每种产品的2条最新记录:
SELECT *
FROM product
WHERE (
SELECT count(*)
FROM product AS p
WHERE p.Product = product.Product AND p.Date >= product.Date
) <= 2
ORDER BY Product ASC;
我已按产品名称按升序订购产品。您可以更改查询的最后一行,以便按照您想要的任何顺序获取它。
您可以在此处找到有关您的问题的更多详细信息:http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/