Ich habe diese Tabelle (vereinfacht):MySql bedingten Auftrag von
CREATE TABLE `my_table` ( `id` INT NOT NULL AUTO_INCREMENT , `item_name` VARCHAR(45) NULL , `price` DECIMAL(10,0) NULL , PRIMARY KEY (`id`))
Ich brauche alle Elemente aus der Tabelle auszuwählen, bestellt auf diese Weise:
1. Artikel mit Preis> 0.00 zuerst nach Preis sortiert ASC
2. Artikel mit Preis = 0.00 zuletzt, bestellt von id
ich versuchte dies:
SELECT * FROM my_table WHERE 1 ORDER BY CASE price WHEN !0.00 THEN price ELSE id END ASC
Und ich bekomme Ergebnisse wie
item_name | price ----------|------- foo | 150,00 bar | 0,00 baz | 500,00 hum | 0,00
Wie erstelle ich die Abfrage
item_name | price ----------|------- foo | 150,00 baz | 500,00 bar | 0,00 hum | 0,00
haben?
Vielen Dank für Ihre Zeit
+1 für das Lesen der Frage. –
Wunderbar, vielen Dank! Eine Frage, die 1 und -1 von THEN und ELSE was bedeuten sie? – ecstrim
Das bedeutet, wenn der Preis 0 ist, 1 für die Sortierung zuweisen, andernfalls -1 zuweisen. Beliebige zwei Werte würden funktionieren, solange der THEN-Wert größer als der ELSE-Wert ist. –