MySQL версия сервера 5.0.45. Учтите следующее:
( SELECT CASE
WHEN t.group_id = 12 THEN 'yes'
ELSE 'no'
END
FROM sample_table t
WHERE t.user_id = 2
AND t.group_id = 12 ) as foo
Этот подзапрос более крупного оператора работает так, как я ожидал, получая строковое значение «да» или «нет» большую часть времени. Это не идеально, но это то, что вы получаете за работу над чужим кодом!
Однако иногда select может законно вернуть пустой набор, и в этом случае для foo задано значение NULL. Это на самом деле не ломает приложение, но раздражает. Есть ли способ, которым я могу гарантировать, что foo всегда будет «да» или «нет», даже если в таблице нет совпадающих строк?