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

MySQL中的条件排序?

江阳冰
2023-03-14
问题内容

我有3个字段的“任务”表:

  1. 日期
  2. 优先级(0,1,2)
  3. 完成(0,1)

我想要实现的是对整个表按“完成”标志排序,未完成的任务应按优先级排序,而已完成的任务应按日期排序:

  1. 从按完成的asc的任务顺序中选择*
  2. 如果完成= 0,则按优先级依次排序
  3. 如果完成= 1,则另外按日期顺序排序

不使用工会就可以在MySQL中做到这一点吗?

谢谢。


问题答案:

您可以尝试ORDER BY (done asc, aux desc)在使用aux来计算aux时CASE根据的值产生优先级或日期done(您可能必须将它们强制转换为相同类型以适合同一表达式,例如,将日期强制转换为合适的整数天数)。

例如:

SELECT * FROM tab
ORDER BY done desc,
         case done
             when 0 then prio 
             else to_days(thedate)
         end desc;


 类似资料:
  • 问题内容: 我有这张桌子(简体): 我需要从表中选择所有项目,并按以下方式排序: 1.价格> 0.00首先的项目,按价格ASC排序 2.价格= 0.00最后的项目,按ID排序 我尝试了这个: 我得到类似的结果 我如何建立查询 ? 感谢您的时间 问题答案: 这将达到目的。

  • 问题内容: 我正在尝试更新表中的值,但是我需要添加一些条件。我找到了CASE函数,但是如果是最好的方法,我就不知道了。这是一个例子: 我的表是例如“关系” 我举个例子: 输出: 我想在3和4之间的关系中更改用户3的名称,但我不知道它是userid1还是userid2。 我虽然如此 但这是行不通的!有任何想法吗?首先十分感谢。 问题答案: 不幸的是,最终要获得的结果还不是很清楚,但是这就是您可以如何

  • 问题内容: 我有两个这样的表,两个都是单独的表 另一个表包含以下结构 我需要从表II中选择AccountNo或TempAccountNo,Mycolumn,条件是 我需要选择 我需要选择 我该如何实现。 问题答案:

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

  • 我正在尝试根据买入或卖出方向对股票订单列表进行排序。 我试过这样的方法: 我看到下面的错误消息,我不清楚。 不兼容的类型。必需的int,但已将“comparing”推断给Comparator:不存在类型变量T,U的实例,因此Comparator符合Integer。

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