WHERE IN kræver, at sættet af værdier angives bogstaveligt i forespørgslen, ikke som en enkelt værdi, der indeholder en kommasepareret streng. Hvis du skriver:
WHERE 6 IN (a.allowed_activity)
det vil behandle a.allowed_activity som kun en enkelt værdi, og sammenlign den med 6 , ikke som et sæt af flere værdier, der skal søges i.
FIND_IN_SET søger i en kommasepareret streng efter værdien.
En anden måde at se det på er IN er en genvej til en masse = test kombineret med OR :
WHERE x IN (a, b, c, d)
er en forkortelse for
WHERE x = a OR x = b OR x = c OR x = d
Når du omskriver det på denne måde, kan du tydeligt se, hvorfor det ikke vil fungere med en kolonne, der indeholder en kommasepareret streng. Det oversætter simpelthen
WHERE 6 IN (a.allowed_activity)
til:
WHERE 6 = a.allowed_activity