WHERE IN erfordert, dass der Wertesatz wörtlich in der Abfrage angegeben wird, nicht als einzelner Wert, der eine durch Kommas getrennte Zeichenfolge enthält. Wenn Sie schreiben:
WHERE 6 IN (a.allowed_activity)
es behandelt a.allowed_activity als einzelnen Wert und vergleichen Sie ihn mit 6 , nicht als ein Satz von mehreren zu durchsuchenden Werten.
FIND_IN_SET sucht in einer kommagetrennten Zeichenfolge nach dem Wert.
Eine andere Möglichkeit, es anzuzeigen, ist IN ist eine Abkürzung für eine Reihe von = Tests kombiniert mit OR :
WHERE x IN (a, b, c, d)
ist die Abkürzung für
WHERE x = a OR x = b OR x = c OR x = d
Wenn Sie es so umschreiben, können Sie deutlich sehen, warum es nicht mit einer Spalte funktioniert, die eine durch Kommas getrennte Zeichenfolge enthält. Es übersetzt einfach
WHERE 6 IN (a.allowed_activity)
zu:
WHERE 6 = a.allowed_activity