选择子组中的最新行

时间:2012-06-07 16:32:39

标签: mysql sql

我有一个由连接和一些条件创建的下表:

product_id     date
11111          2012-06-05
11111          2012-05-01
22222          2011-05-01
22222          2011-07-02
33333          2011-01-01

我正在尝试获取行,以便我的结果集包含每个产品的最新日期:

GOAL

product_id     date
11111          2012-06-05
22222          2011-07-02
33333          2011-01-01  

我可以按原样提取数据并进行手动排序,但我不愿意。我似乎无法找到一种方法来执行SELECT MAX()而不返回单行,而我宁愿不为每个产品ID运行查询。

该表由此查询生成:

SELECT item_id, sales_price, item, description, transaction_date 
FROM db.invoice_line AS t1 INNER JOIN db.invoices AS t2 
ON t1.invoice_id = t2.id_invoices WHERE item IS NOT NULL 
AND item_id != '800001E9-1325703142' AND item_id != '800002C3-1326830147' 
AND invoice_id IN 
    (SELECT id_invoices FROM db.invoices 
       WHERE customer_id = '[variable customer id]' 
       AND transaction_date >= DATE_SUB(NOW(), INTERVAL 360 DAY));

我使用联接来“添加”日期列。之后,我忽略了无用的物品,并从一年前到特定客户的发票中选择。

感谢任何指导。

戴恩

1 个答案:

答案 0 :(得分:3)

看起来group by符合条款:

select  product_id
,       max(date)
from    YourTable
group by
        product_id