Dans votre requête actuelle, vous triez par la somme des quatre colonnes. Vous pouvez utiliser least
pour obtenir la valeur la plus basse, votre tri par clause pourrait ressembler à :
SELECT *
FROM vehicle
ORDER BY
`revisit` DESC,
CASE WHEN `revisit` = 1 THEN LEAST(`FL`, `FR`, `RR`, `RL`) END ASC,
CASE WHEN `revisit` = 0 THEN `date` END ASC
Bien sûr, cela ne trierait que par la valeur la plus basse. Si deux lignes partagent la même valeur la plus basse, il n'y a pas de tri sur la deuxième valeur la plus basse. Faire cela est un peu plus difficile, et je n'ai pas vraiment compris de votre question si vous en avez besoin.