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