sql >> Databáze >  >> RDS >> Mysql

Hodnoty vazby PDO pro příkaz MySQL IN

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.



  1. Jak jsou data uložena v Oracle?

  2. Jak funguje SQLite Trim()

  3. ORA-01658:nelze vytvořit INITIAL rozsah pro segment v tabulkovém prostoru TS_DATA

  4. Jak volat uloženou proceduru Oracle, která obsahuje uživatelsky definovaný typ v jazyce Java?