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

如何在MySQL中最多可以为null的两列排序?

沈永贞
2023-03-14
问题内容
create table jobs(
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        .....
        salaryminus INTEGER UNSIGNED DEFAULT NULL,
        salaryplus INTEGER UNSIGNED DEFAULT NULL,
        .....
);

我想做这样的事情:

Select * from jobs order by maxof(salaryminus, salaryplus) limit 10;

maxof(Null,1000) 应该是1000

如何实施maxof


问题答案:

如果您知道该值salaryplus始终大于salaryminus,则可以执行

order by coalesce(salaryplus, salaryminus, 0)

coalesce 将返回不为null的第一个值;如果两个值均为null,则返回0(在此示例中)。

否则,请执行以下操作:

order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))

这将同时治疗salaryminussalaryplus为0,如果是空的,将被两个较大的订单。



 类似资料:
  • 问题内容: 我正在修改MySQL语句,但LEFT JOIN和空白行有一些麻烦。目前,我有: 只要“ tblguardians”表中有一个条目,该查询就可以正常工作,但是如果没有记录,则LEFT JOIN返回NULL- 因此,当我遍历PHP中的结果时,不会返回该条目。 有没有一种方法可以从“ tblcases”返回字段,而无论“ tblguardians”是否有关联的结果?我想我已经读了太多的Goo

  • 问题内容: 我有一个像下面的表格 我需要先获得特色产品,然后再选择优先级为p1,p2和p3的产品 我写了一个查询,在下面是行不通的。 你能在那发现错误吗 问题答案: 试试这个 如果您在mysql枚举上使用ORDER BY,则不会按字母顺序对其进行排序,而是会按其在枚举中的位置对其进行排序。 如果要按照描述的字母顺序排序,请将枚举名称转换为这样的字符串

  • 在Java中可以吗? 例如: 我的目标是编写一个返回的函数。所述存储在节点的高度中,如果节点不存在,它将为空,我需要检查一下。 我这样做是为了做家庭作业,但这一特定部分并不是家庭作业的一部分,它只是帮助我完成我正在做的事情。 谢谢你的评论,但似乎很少有人真正读过代码下的内容,我在问我还能如何实现这个目标;很容易发现它不起作用。

  • 问题内容: 我希望下面的代码向我显示表中交换列为null但结果集显示0行的所有记录。知道为什么吗? 问题答案: 也许您将其解释为不相同,但请尝试此操作 但如果仍然无法获得价值,也许它上面有空格,那么您应该这样做,

  • 我正在建立一个聊天网站,我有一个包含以下列的表,,,。 是聊天来源的用户的,而是聊天发送到的用户的。 现在我想获取所有聊天,但我也想分组,如果是我的id,它将按分组,如果是我的用户id,它将按分组,我尝试了这个分组,但它只是在和相同时才分组,我怎么也能让它反过来呢

  • 问题内容: 我有一个表,其中有几个ID列指向其他表。 我希望 只有 在将数据放入其中时,外键才能强制完整性。如果我稍后进行更新以填充该列,则它还应该检查约束。 (这可能取决于数据库服务器,我使用的是MySQL和InnoDB表类型) 我相信这是一个合理的期望,但是如果我错了,请纠正我。 问题答案: 是的,您只能在值不为NULL时强制执行约束。可以使用以下示例轻松测试它: 第一次插入将通过,因为我们在