WHERE IN membutuhkan kumpulan nilai untuk ditentukan secara harfiah dalam kueri, bukan sebagai nilai tunggal yang berisi string yang dipisahkan koma. Jika Anda menulis:
WHERE 6 IN (a.allowed_activity)
itu akan memperlakukan a.allowed_activity hanya sebagai satu nilai, dan bandingkan dengan 6 , bukan sebagai kumpulan beberapa nilai untuk ditelusuri.
FIND_IN_SET mencari string yang dipisahkan koma untuk nilainya.
Cara lain untuk melihatnya adalah IN adalah jalan pintas untuk sekumpulan = tes yang dikombinasikan dengan OR :
WHERE x IN (a, b, c, d)
kependekan dari
WHERE x = a OR x = b OR x = c OR x = d
Saat Anda menulis ulang seperti ini, Anda dapat melihat dengan jelas mengapa itu tidak bekerja dengan kolom yang berisi string yang dipisahkan koma. Ini hanya menerjemahkan
WHERE 6 IN (a.allowed_activity)
ke:
WHERE 6 = a.allowed_activity