Использованием MYSQL Я хотел бы реорганизовать следующее SELECT
заявления вернуть всей записи, содержащей новейший invoice_date
:Как выбрать всю запись при использовании MAX() С GROUP BY
> 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
.
Это, кажется, работает как хотелось бы, однако это невероятно медленно. Может ли это быть лучшим решением, чем использование GROUP BY на MySQL? – rswolff
Попробуйте оба и посмотрите. Не забудьте проанализировать оба запроса с помощью команды «EXPLAIN». –