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.