替代 CASE WHEN 返回所有列,而不仅仅是一列

时间:2021-07-06 05:05:07

标签: mysql

由于托管中缺少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)

欢迎任何在此类查询中模拟条件的建议。

0 个答案:

没有答案