一尘不染

MySql条件排序

mysql

我有这张桌子(简体):

创建表`my_table`(
  `id` INT NOT NULL AUTO_INCREMENT,
  `item_name` VARCHAR(45)NULL,
  `price` DECIMAL(10,0)NULL,
  主键(`id`))

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

我尝试了这个:

    选择 * 
    来自my_table 
    在哪里1  
    订购 
      当价格0.00时的情况 
       ELSE ID
      结束 
    ASC

我得到类似的结果

item_name | 价钱
---------- | -------
foo | 150,00
酒吧 0,00
baz | 500,00
嗡嗡声 0,00

我如何建立查询

item_name | 价钱
---------- | -------
foo | 150,00
baz | 500,00
酒吧 0,00
嗡嗡声 0,00

感谢您的时间


阅读 426

收藏
2020-05-17

共1个答案

一尘不染

这将达到目的。

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