Mysql查询 - 仅给出通用结果

时间:2015-02-28 11:42:47

标签: mysql sql

我有桌子'产品'其中有下面的列,我想要产品明智的最近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个最高记录等等 那怎么可能

2 个答案:

答案 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`

SQLFiddle

答案 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/