作爲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