Je to totéž, co bylo položeno v této otázce:Mohu svázat pole s podmínkou IN()?
Odpověď byla, že pro seznam proměnných velikostí v in
klauzule, budete muset vytvořit dotaz sami.
Nicméně můžete použít seznam v uvozovkách oddělený čárkami pomocí find_in_set
, ačkoli u velkých souborů dat by to mělo značný dopad na výkon, protože každá hodnota v tabulce musí být přetypována na typ char.
Například:
select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)
Nebo jako třetí možnost můžete vytvořit uživatelsky definovanou funkci, která za vás rozděluje seznam oddělený čárkami (srov. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids /
). Toto je pravděpodobně nejlepší možnost ze všech tří, zvláště pokud máte mnoho dotazů, které se spoléhají na in(...)
klauzule.