Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO-Bindungswerte für die MySQL IN-Anweisung

Dies ist dasselbe, was in dieser Frage gestellt wurde:Kann ich ein Array an eine IN()-Bedingung binden?

Die Antwort dort war, für eine Liste mit variabler Größe im in -Klausel müssen Sie die Abfrage selbst erstellen.

Allerdings Sie können die zitierte, durch Kommas getrennte Liste mit find_in_set , obwohl dies bei großen Datensätzen erhebliche Auswirkungen auf die Leistung haben würde, da jeder Wert in der Tabelle in einen Zeichentyp umgewandelt werden muss.

Zum Beispiel:

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

Oder als dritte Option Sie könnten eine benutzerdefinierte Funktion erstellen, die die durch Kommas getrennte Liste für Sie aufteilt (vgl. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Dies ist wahrscheinlich die beste Option der drei, besonders wenn Sie viele Abfragen haben, die auf in(...) angewiesen sind Klauseln.