sql >> Database teknologi >  >> RDS >> Mysql

forskel mellem where_in og find_in_set

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


  1. Adgang til XAMPP MySql-database fra en anden computer

  2. Hvordan viser man de sekundære poster i datatabellens underordnede række med respektive id?

  3. PostgreSQL-kolonnen 'foo' eksisterer ikke

  4. Mineplaner:Ikke kun for planens cache