Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL SELECT ORDER BY várias colunas dependendo do valor de outra coluna


Na sua consulta atual, você ordena pela soma das quatro colunas. Você pode usar least para obter o valor mais baixo, então seu pedido por cláusula pode ser assim:
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

É claro que isso classificaria apenas pelo valor mais baixo. Se duas linhas compartilharem o mesmo valor mais baixo, não haverá classificação no segundo valor mais baixo. Fazer isso é um pouco mais difícil, e eu realmente não entendi da sua pergunta se você precisa disso.