Mysql
 sql >> Base de données >  >> RDS >> Mysql

Valeurs de liaison PDO pour l'instruction MySQL IN

C'est la même chose que celle posée dans cette question :Puis-je lier un tableau à une condition IN() ?

La réponse était que, pour une liste de taille variable dans le in clause, vous devrez construire la requête vous-même.

Cependant, vous pouvez utiliser la liste entre guillemets séparée par des virgules en utilisant find_in_set , bien que pour les grands ensembles de données, cela aurait un impact considérable sur les performances, car chaque valeur de la table doit être convertie en un type char.

Par exemple :

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

Ou, comme troisième option, vous pouvez créer une fonction définie par l'utilisateur qui divise la liste séparée par des virgules pour vous (cf. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). C'est probablement la meilleure option des trois, surtout si vous avez beaucoup de requêtes qui reposent sur in(...) clauses.