WHERE IN
値のセットは、コンマ区切りの文字列を含む単一の値としてではなく、クエリで文字通り指定する必要があります。あなたが書く場合:
WHERE 6 IN (a.allowed_activity)
a.allowed_activity
を処理します 単一の値として、6
と比較します 、検索する複数の値のセットとしてではありません。
FIND_IN_SET
カンマ区切りの文字列で値を検索します。
それを表示する別の方法は、そのIN
です たくさんの=
のショートカットです OR
と組み合わせたテスト :
WHERE x IN (a, b, c, d)
の略です
WHERE x = a OR x = b OR x = c OR x = d
このように書き直すと、カンマ区切りの文字列を含む列で機能しない理由がはっきりとわかります。単に翻訳します
WHERE 6 IN (a.allowed_activity)
宛先:
WHERE 6 = a.allowed_activity