sql >> Base de Datos >  >> RDS >> Mysql

diferencia entre where_in y find_in_set

WHERE IN requiere que el conjunto de valores se especifique literalmente en la consulta, no como un único valor que contenga una cadena delimitada por comas. Si escribes:

WHERE 6 IN (a.allowed_activity)

tratará a.allowed_activity como un solo valor y compararlo con 6 , no como un conjunto de múltiples valores para buscar.

FIND_IN_SET busca una cadena delimitada por comas para el valor.

Otra forma de verlo es que IN es un atajo para un montón de = pruebas combinadas con OR :

WHERE x IN (a, b, c, d)

es la abreviatura de

WHERE x = a OR x = b OR x = c OR x = d

Cuando lo reescribe así, puede ver claramente por qué no funcionará con una columna que contenga una cadena delimitada por comas. Simplemente traduce

WHERE 6 IN (a.allowed_activity) 

a:

WHERE 6 = a.allowed_activity