У меня есть эта таблица (упрощенный):MySql условный заказ по
CREATE TABLE `my_table` ( `id` INT NOT NULL AUTO_INCREMENT , `item_name` VARCHAR(45) NULL , `price` DECIMAL(10,0) NULL , PRIMARY KEY (`id`))
Мне нужно, чтобы выбрать все элементы из таблицы, заказал этот путь:
1. детали с ценой> 0,00 первых, упорядоченный по цене ASC
2. детали с ценой = 0,00 в прошлом, упорядоченный по идентификатору
Я попытался это:
SELECT * FROM my_table WHERE 1 ORDER BY CASE price WHEN !0.00 THEN price ELSE id END ASC
И я получаю результаты, как
item_name | price ----------|------- foo | 150,00 bar | 0,00 baz | 500,00 hum | 0,00
Как создать запрос, чтобы иметь
item_name | price ----------|------- foo | 150,00 baz | 500,00 bar | 0,00 hum | 0,00
?
Спасибо за ваше время
+1 для чтения вопроса. –
Замечательно, спасибо! Один вопрос, 1 и -1 от THEN и ELSE, что они означают? – ecstrim
Это означает, что когда цена равна 0, назначьте 1 для сортировки, иначе укажите -1. Любые два значения будут работать, если значение THEN больше значения ELSE. –