由于托管中缺少SUPER权限,我需要将一些存储过程转换为SQL查询。
最初我问了一个关于如何在查询中使用条件的问题 here,该问题已经有了答案,并且在我只需要一列时是正确的并且很有用。 但现在我的问题是我有时需要返回多个或所有列,然后 CASE WHEN 对我不起作用
所以我需要这样的:
SET @condition = 0;
IF (@condition = 0) THEN
SELECT * FROM my_table WHERE id = 1;
ELSEIF (@condition = 1) THEN
SELECT 'ELSEIF result' AS res;
ELSE
SELECT 'ELSE result' AS res;
END IF;
但这有语法错误:
如果我使用 CASE
SET @condition = 0;
SELECT CASE
WHEN @condition=0 THEN (SELECT * FROM my_table WHERE id = 1)
WHEN @condition=1 THEN 'elseif result'
ELSE 'else result'
END AS res;
这适用于 @condition = 1
OR ELSE
情况,但如果 @condition = 0
我得到错误:Operand should contain 1 column(s)
欢迎任何在此类查询中模拟条件的建议。