ho questa tabella (semplificato):MySql ordine condizionato da
CREATE TABLE `my_table` ( `id` INT NOT NULL AUTO_INCREMENT , `item_name` VARCHAR(45) NULL , `price` DECIMAL(10,0) NULL , PRIMARY KEY (`id`))
ho bisogno di selezionare tutti gli elementi dalla tabella, ordinato in questo modo:
1. Gli articoli con il prezzo> 0.00 prima, in ordine di prezzo ASC
2. articoli con prezzo = 0.00 ultima, in ordine di id
ho provato questo:
SELECT * FROM my_table WHERE 1 ORDER BY CASE price WHEN !0.00 THEN price ELSE id END ASC
E ottengo risultati come
item_name | price ----------|------- foo | 150,00 bar | 0,00 baz | 500,00 hum | 0,00
Come faccio a costruire la query di avere
item_name | price ----------|------- foo | 150,00 baz | 500,00 bar | 0,00 hum | 0,00
?
Grazie per il vostro tempo
+1 per leggere la domanda. –
Meraviglioso, grazie mille! Una domanda, 1 e -1 da THEN e ELSE cosa significano? – ecstrim
Significa che quando il prezzo è 0, assegna 1 per l'ordinamento, altrimenti assegna -1. Qualsiasi due valori funzionerebbe, a condizione che il valore THEN sia maggiore del valore ELSE. –