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

Valori di associazione PDO per l'istruzione MySQL IN

Questa è la stessa cosa che è stata posta in questa domanda:Posso associare un array a una condizione IN()?

La risposta è stata che, per un elenco di dimensioni variabili nel in clausola, dovrai costruire tu stesso la query.

Tuttavia, puoi utilizzare l'elenco separato da virgole tra virgolette utilizzando find_in_set , sebbene per set di dati di grandi dimensioni, ciò avrebbe un notevole impatto sulle prestazioni, poiché è necessario eseguire il cast di ogni valore nella tabella su un tipo char.

Ad esempio:

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

Oppure, come terza opzione, potresti creare una funzione definita dall'utente che suddivide l'elenco separato da virgole per te (cfr. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Questa è probabilmente l'opzione migliore delle tre, specialmente se hai molte query che si basano su in(...) clausole.