【发布时间】:2017-12-20 01:55:04
【问题描述】:
作为 mysql (MariaDB) 中多辆车的车辆日志的一部分,我需要通过一个查询找到包含每辆车最大里程的行。 该表包含列:id、vehicle_id、km_start、km_end。 所以任务是为每个vehicle_id找到max(max(km_start,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 始终存在,将完成这项工作。但是,如果还没有输入 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)
返回 错误 1054 (42S22):“IN/ALL/ANY 子查询”中的未知列“km_max”
【问题讨论】:
标签: mysql mariadb greatest-n-per-group