Ich arbeite an einem bestehenden Projekt und habe diese SQL-Anweisung gefunden. Nach der Überprüfung der MySQL documentation, bin ich immer noch verwirrt durch die Syntax und wie MySQL es interpretiert.Wie interpretiert MySQL: ORDER BY CASE Status WANN 1 DANN 1 ELSE -1 END DESC
Ich habe eine Spalte namens status
, die 0 (inaktiv), 1 (aktiv), 2 (abgeschlossen), 3 (testen) sein kann.
ORDER BY CASE status WHEN 1 THEN 1 ELSE -1 END DESC, id ASC
Was mich verwirrt ist THEN 1 ELSE -1
. In der documentation erwähnt es, dass Sie eine statement_list
nach platzieren. Ich würde erwarten, so etwas zu sehen:
ORDER BY CASE status WHEN 1 THEN status ELSE -1 (or some other value that will be ignored) END DESC, id ASC
Wie MySQL interpretiert THEN 1 ELSE -1
? Ich bin gespannt, wie diese Aussage die richtigen Ergebnisse liefert. Dies geschieht im Prinzip wie folgt: Wenn Status = 1, dann ignorieren Sie ORDER BY status DESC
sonst die Reihenfolge nach Anweisung.
werden alle den Status = 1 vor Status setzen = alle others.So wenn status = 1 es Aufträge durch 1, wenn Status! = 1 es Aufträge durch -1.Since es ist DESC status = 1 kommt vor Status = -1 – Mihai
'statement_list' ist eigentlich irreführend, da die Liste mehrere * was auch immer * beinhaltet, aber es ist nur eine ... – dnoeth