В MySQL 5.7
у меня есть следующие таблицы orders
и transactions
соответственно. И я хочу получить максимум transaction.timestamp
для каждого продукта, где orders.status
«сделано».

Я использовал следующий запрос:
SELECT
MAX(timestamp),
product,
idorder,
idtransaction,
order_name
FROM
transaction left join orders
ON
transaction.order_id=orders.idorder
WHERE
status='done'
GROUP BY
'product';
Но это привело к ошибке следующим образом:
Код ошибки: 1055. Выражение № 2 списка SELECT отсутствует в GROUP BY
пункт и содержит неагрегированный столбец
'openbank_consentdb.transaction.product', который не является функционально
зависит от столбцов в предложении GROUP BY; это несовместимо с
sql_mode = only_full_group_by
Я понимаю проблему здесь, SQL не может понять, как GROUP BY
, потому что есть несколько категорий. Как записать его так, чтобы он возвращал детали, относящиеся к записям с максимальной отметкой времени для каждого продукта?