当前位置: 首页 > 面试题库 >

MySql条件排序

苏雅珺
2023-03-14
问题内容

我有这张桌子(简体):

创建表`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

感谢您的时间


问题答案:

这将达到目的。

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


 类似资料:
  • 问题内容: 我有3个字段的“任务”表: 日期 优先级(0,1,2) 完成(0,1) 我想要实现的是对整个表按“完成”标志排序,未完成的任务应按优先级排序,而已完成的任务应按日期排序: 从按完成的asc的任务顺序中选择* 如果完成= 0,则按优先级依次排序 如果完成= 1,则另外按日期顺序排序 不使用工会就可以在MySQL中做到这一点吗? 谢谢。 问题答案: 您可以尝试在使用aux来计算aux时根据

  • 问题内容: 我有下表: 我想要以下排序: 首先,所有带有的行。这些行必须以排序。 然后,其他所有行()。但是,这些行必须使用进行排序。 以下查询正确吗? 有一个更好的方法吗?请问保持行排序,因此只是连接两个内部查询的输出? 我不知道如何根据条件在中重复列。 问题答案: 可以使用来执行条件订单,如下所示:

  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复表达: 或包装查询

  • 问题内容: 我有一个名为Gift的表,该表与一个名为ClickThrough的表具有一对多关系- 该表指示单击了该特定Gift的次数。我需要查询所有的Gift对象,按ClickThrough计数排序。我不需要返回ClickThrough计数,因为我不需要做任何事情,我只想将其用于订购即可。 我需要查询以直接返回Gift对象的列表,只是按ClickThrough计数排序。如何使用Criteria A

  • 问题内容: 我正在对两个表进行联接。一个是用户表,另一个是高级用户列表。我需要让高级会员首先出现在我的查询中。但是,仅因为它们位于高级用户表中并不意味着它们仍然是高级成员- 还有一个IsActive字段也需要检查。 因此,基本上我需要按以下顺序返回结果: 活跃的高级用户 普通和不活跃的高级用户 现在我有以下内容: 问题在于,它会将非活跃高级会员置于非高级会员之上。 (我为此使用MS SQL Ser

  • 问题内容: 通过创建这样的对象 并传递给 它可以像这样漂亮地生成SQL 但是,这都是“ AND”条件,如何通过创建条件对象来生成“ OR”条件? 问题答案: 似乎现在有另一种格式 会产生 参见文档:http : //docs.sequelizejs.com/en/latest/docs/querying/#where