有没有一种方法可以使用 CASE WHEN 测试中的值作为其结果之一,而无需将 select 语句写出两次(因为它可能又长又乱)?例如:
SELECT id,
CASE WHEN (
(SELECT MAX(value) FROM my_table WHERE other_value = 1) IS NOT NULL
)
THEN (
SELECT (MAX(value) FROM my_table WHERE other_value = 1
)
ELSE 0
END AS max_value
FROM other_table
有没有一种方法可以将第一次运行 SELECT 语句(用于测试)的结果也用作 THEN 值?我尝试在第一个 SELECT 之后使用“AS max_value”,但它给了我一个 SQL 错误。
更新:糟糕,正如 Tom H. 所指出的,我忘记了我原来问题中的“IS NOT NULL”。
最佳答案
您的语句是否运行?它不是 CASE 语句中的 bool 表达式。如果不使用 bool 值,MySQL 会默认检查 NULL 值吗?
我认为这可能是您正在寻找的:
SELECT
id,
COALESCE(
(
SELECT
MAX(value)
FROM
My_Table
WHERE
other_value = 1
), 0) AS max_value
FROM
Other_Table
关于sql - 有没有一种方法可以让我在测试其中一个结果时使用 CASE 而不是运行它两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/854747/