Как я могу вернуть несколько значений из оператора IF в MySQL? Включение IF в запрос не является вариантом.MySQL 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
Существует не простой, элегантный способ делать то, что вы хотите. 'find_in_set()', пожалуй, самый простой, но он не имеет лучшей производительности. Динамический SQL - самый быстрый метод, но он не изящный. –
Переменная может содержать только одно значение. SQL не имеет массивов или списков в качестве значений. – Barmar
* «Внедрение IF в запрос не является вариантом». * Почему бы и нет? Что относительно 'SELECT * FROM t1 WHERE (@year = 2014 AND c1 IN (2,3,4)) ИЛИ (@year! = 2014 AND c1 IN (1))'? Условие, которое невозможно, должно быть автоматически оптимизировано, что делает этот стиль столь же эффективным. –