Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL SELECT ORDER BY mehrere Spalten abhängig vom Wert der anderen Spalte

In Ihrer aktuellen Abfrage sortieren Sie nach der Summe der vier Spalten. Sie können least verwenden um den niedrigsten Wert zu erhalten, also könnte Ihre order by-Klausel wie folgt aussehen:

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

Natürlich würde dies nur nach dem niedrigsten Wert sortieren. Wenn zwei Zeilen denselben niedrigsten Wert teilen würden, gibt es keine Sortierung nach dem zweitniedrigsten Wert. Das ist ein bisschen schwieriger, und ich habe aus Ihrer Frage nicht wirklich verstanden, ob Sie das brauchen.