如何从MySQL中的IF语句返回多个值?将IF嵌入查询不是一种选择。
SET @values = IF(@year = 2014, (2, 3, 4), 1); # either (2, 3, 4) OR 1
SELECT * FROM whatever WHERE `column` IN (@values);
错误代码:1241。操作数应包含1列
一种解决方案是使用引号并将该值存储到变量中,但它不能与IN命令一起使用,它需要原始数字:
SELECT IF (24 IN ("23,24,25"), TRUE, FALSE) AS `does-it-contain`;
FALSE
答案 0 :(得分:1)
如果您在某个过程(MySQL存储过程或客户端编程语言)中执行此操作,则可以使用临时表。
CREATE TEMPORARY TABLE temp_values (value INT, PRIMARY KEY value);
IF @year = 2014
THEN INSERT INTO temp_values VALUES (2), (3), (4);
ELSE INSERT INTO temp_values VALUES (1);
END IF;
SELECT w.* FROM wherever AS w
JOIN temp_values AS v ON v.column = v.value;