我正在运行这个查询。
SELECT
t1.quantity,
t2.transaction_date,
t1.product_id
FROM
ezsystem_usah.invoice_line AS t1
INNER JOIN ezsystem_usah.invoices AS t2
ON t1.invoice_id = t2.id_invoices
WHERE
t2.customer_id = '8000004C-1325619329'
AND ( product_id = '8000016F-1325198704'
OR product_id = '80000027-1324422404' OR ...);
结果表是:
quantity | transaction_date | product_id
7 2012-01-04 8000016F-1325198704
8 2012-03-05 8000016F-1325198704
1 2012-01-05 11111111-1324422404
... ... ...
我想根据特定 product_id 的 MAX(transaction_date) 选择行,以便产生如下内容:
quantity | transaction_date | product_id
8 2012-03-05 8000016F-1325198704
1 2012-01-05 11111111-1324422404
换句话说,从joined table中,我想选择EACH product id的最新条目。
我努力了:
SELECT
t1.quantity,
MAX(t2.transaction_date),
t1.product_id
FROM
ezsystem_usah.invoice_line AS t1
INNER JOIN ezsystem_usah.invoices AS t2 ON t1.invoice_id = t2.id_invoices
WHERE
t2.customer_id = '8000004C-1325619329'
AND (product_id = '8000016F-1325198704' OR product_id = '80000027-1324422404' OR ...)
GROUP BY
t1.product_id;
但是数量不对。
我没有尝试过但我认为可能有效的另一种方法是使用HAVING MAX(transaction_date) = ([sub query])
,但它似乎很昂贵。
最坏的情况是,我可以为每个产品一个一个地运行查询,但如果可能的话,我想避免这种情况。
谢谢,戴恩