I have this table (simplified):
CREATE TABLE `my_table` ( `id` INT NOT NULL AUTO_INCREMENT , `item_name` VARCHAR(45) NULL , `price` DECIMAL(10,0) NULL , PRIMARY KEY (`id`) ) I need to select all items from the table, ordered this way:
price > 0.00 first, ordered by price ASC price = 0.00 last, ordered by id I tried this:
SELECT * FROM my_table WHERE 1 ORDER BY CASE price WHEN !0.00 THEN price ELSE id END ASC And I get results like
| item_name | price |
|---|---|
| foo | 150,00 |
| bar | 0,00 |
| baz | 500,00 |
| hum | 0,00 |
How do I build the query to have
| item_name | price |
|---|---|
| foo | 150,00 |
| baz | 500,00 |
| bar | 0,00 |
| hum | 0,00 |
Thank you for your time
This will do the trick..
SELECT * FROM my_table WHERE 1 ORDER BY CASE price WHEN 0 THEN 1 ELSE -1 END ASC, price asc, id asc
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With