使用 MYSQL 我想重构以下SELECT
语句以返回包含最新的整个记录invoice_date
:
> SELECT id, invoice, invoice_date
FROM invoice_items
WHERE lot = 1047
id invoice_id invoice_date
-----------------------------------
3235 1047 2009-12-15 11:40:00
3295 1047 2009-12-15 16:00:00
3311 1047 2009-12-15 09:30:00
3340 1047 2009-12-15 13:50:00
使用 MAX() 聚合函数和 GROUP BY 子句让我了解其中的一部分:
> SELECT id, invoice_id, max(invoice_date)
FROM invoice_items
WHERE invoice_id = 1047
GROUP BY invoice_id
id invoice_id invoice_date
-----------------------------------
3235 1047 2009-12-15 16:00:00
请注意,查询似乎得到了MAX(invoice_date)
正确的结果,但id
返回的 (3235) 不是id
包含MAX(invoice_date)
(3295) 的记录,而是id
初始查询中的第一条记录。
如何重构此查询以给我包含的整个记录MAX(invoice_date)
?
解决方案必须使用 GROUP BY 子句,因为我需要invoice_date
为每张发票获取最新信息。