WHERE IN vyžaduje, aby byla sada hodnot v dotazu uvedena doslovně, nikoli jako jedna hodnota obsahující řetězec oddělený čárkami. Pokud napíšete:
WHERE 6 IN (a.allowed_activity)
bude zpracovávat a.allowed_activity jako jedinou hodnotu a porovnejte ji s 6 , nikoli jako soubor více hodnot k vyhledávání.
FIND_IN_SET hledá hodnotu v řetězci odděleném čárkami.
Dalším způsobem, jak jej zobrazit, je IN je zkratka pro spoustu = testy kombinované s OR :
WHERE x IN (a, b, c, d)
je zkratka pro
WHERE x = a OR x = b OR x = c OR x = d
Když to přepíšete takto, můžete jasně vidět, proč to nebude fungovat se sloupcem obsahujícím řetězec oddělený čárkami. Jednoduše překládá
WHERE 6 IN (a.allowed_activity)
komu:
WHERE 6 = a.allowed_activity