mysql(MariaDB)のいくつかの車両の車両ログの一環として、1台のクエリで各車両に最大の走行距離を含む行を探す必要があります。 テーブルには、id、vehicle_id、km_start、km_endの列が含まれています。 これは、各vehicle_idに対してmax(max_start、km_end)を持つ行を見つけることです。WHEREで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にあるかもしれません。
私は ERROR 1054(42S22)を返し
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)
試してみました:WHEREでの値リストためだろう 'IN/ALL/ANYサブクエリ'
参照します。https://メタ.stackoverflow.com/questions/333952/what-should-i-provide-an-mcve-for-what-to-me-to-be-a-very-simple-sql-query – Strawberry