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

PDO-bindingsværdier for MySQL IN-sætning

Dette er det samme som blev stillet i dette spørgsmål:Kan jeg binde et array til en IN()-betingelse?

Svaret der var det, for en liste i variabel størrelse i in klausul, skal du selv konstruere forespørgslen.

Men du kan bruge den citerede, kommaseparerede liste ved hjælp af find_in_set , men for store datasæt ville dette have betydelig indvirkning på ydeevnen, da hver værdi i tabellen skal castes til en char-type.

For eksempel:

select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)

Eller, som en tredje mulighed, du kan oprette en brugerdefineret funktion, der opdeler den kommaseparerede liste for dig (jf. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Dette er sandsynligvis den bedste mulighed af de tre, især hvis du har mange forespørgsler, der er afhængige af in(...) klausuler.



  1. En databasemodel til en onlineundersøgelse. Del 1

  2. Sådan fungerer UTC_TIME() i MariaDB

  3. Hvordan sender jeg adgangskoden til pg_dump?

  4. 5 typer af databasereparationer