mysql - 重复的CASE语句: Is there a more efficient way of writing this SQL statement?

标签 mysql sql

我有一个 Excel 公式,需要在 MySQL 中重现,格式如下: MAX(IF(A=“”,B-C,B-D),0) 基本上,如果内部 IF < 0,则返回零。

我将其写为:

IF ( CASE
       WHEN  A IS NULL
       THEN B-C
       ELSE B-D
     END > 0,
     CASE
       WHEN  A IS NULL
       THEN B-C
       ELSE B-D
     END, 0 )

但是我不禁想到有一种更简单的写法,毕竟我在这里执行了两次 CASE 语句。我对 mySQL 很生疏,在我开始接触之前,我想知道编写此代码最高效的代码方式是什么

最佳答案

Basically if the inner IF is < 0 return zero.

按照这个,您可以简单地执行以下操作:

select greatest(b - d, 0)

不过,我不太确定您的代码(Excel 或 SQL 中的代码)与此语句有何关系。

关于mysql - 重复的CASE语句: Is there a more efficient way of writing this SQL statement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59116632/

相关文章:

mysql - 如何修复sql查询错误

mysql - 将 .txt 转换为 .sql - 包含国家、州、城市、.. 名称列表

mysql - 连接表的问题(6 个表)

mysql - 当具有聚合函数和 where 子句时,SQL 查询的性能有什么影响

mysql - 在存储过程中使用mysql事务

SQL JOIN 问题(又一个)

sql - 一个数据库用于一个客户或一个用于所有客户

php - 捕获用户上次登录日期

mysql - 用于更新列值的 sql 查询/脚本

mysql - 创建一个包含生成列的表