Cha*_*les 0 mysql sql code-reuse
有没有办法使用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
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用SELECT语句的第一次运行结果(对于测试)作为THEN值?我尝试在第一个SELECT之后使用"AS max_value",但它给了我一个SQL错误.
更新:哎呀,正如Tom H.指出的那样,我在原来的问题中忘记了"IS NOT NULL".
你的陈述是否还在运行?它不是CASE语句中的布尔表达式.如果不使用布尔值,MySQL是否默认检查NULL值?
我想这可能就是你要找的东西:
SELECT
id,
COALESCE(
(
SELECT
MAX(value)
FROM
My_Table
WHERE
other_value = 1
), 0) AS max_value
FROM
Other_Table
Run Code Online (Sandbox Code Playgroud)