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.