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 が常に「yes」または「no」であることを保証できる方法はありますか?