作为mysql(MariaDB)中几辆车的车辆日志的一部分,我需要查找包含每个车辆最大里程数的行,并查询一个查询。 该表包含列:id,vehicle_id,km_start,km_end。 因此,任务是为每个vehicle_id找到max(max(km_start,km_end))行。使用GREATEST在哪里
我发现,如果km_end总是存在
SELECT id
FROM log
WHERE (vehicle_id,km_end) IN (SELECT vehicle_id, MAX(IFNULL(km_end,0))
FROM log
GROUP BY vehicle_id)
将做的工作。但是,如果km_end尚未输入,它将包含0.因此,最大里程数也可能在km_start中。
我试图
SELECT id
FROM log
WHERE (vehicle_id,km_max) IN (SELECT vehicle_id,
GREATEST(MAX(IFNULL(km_start,0)),
MAX(IFNULL(km_end,0))) AS km_max
FROM log GROUP BY vehicle_id)
返回 ERROR 1054(42S22):在 'IN/ALL/ANY子查询'
看到的是https://元.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-a-very-simple-sql-query – Strawberry