MySQL条件条件排序 [英] MySql conditional order by

查看:344
本文介绍了MySQL条件条件排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这张桌子(简体):

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`) )

我需要从表中选择所有项目,并按以下方式排序:
1.价格大于0.00的商品,首先按价格ASC
订购 2.价格最后= 0.00的商品,按ID

I need to select all items from the table, ordered this way:
1. items with price > 0.00 first, ordered by price ASC
2. items with price = 0.00 last, ordered by id

我尝试过:


    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

我如何构建要具有的查询

How do I build the query to have


item_name | price
----------|-------
foo       | 150,00
baz       | 500,00
bar       |   0,00
hum       |   0,00

?

谢谢您的时间

推荐答案

这可以解决问题.

 SELECT * 
    FROM my_table 
    WHERE 1  
    ORDER BY 
      CASE price WHEN 0 THEN 1
       ELSE -1
      END ASC, price asc, id asc

这篇关于MySQL条件条件排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆