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