sql >> Database >  >> RDS >> Mysql

PDO-bindingswaarden voor MySQL IN-instructie

Dit is hetzelfde als in deze vraag werd gesteld:Kan ik een array binden aan een IN()-voorwaarde?

Het antwoord was dat, voor een lijst met variabele afmetingen in de in clausule, moet u de query zelf maken.

Echter, je kunt de geciteerde, door komma's gescheiden lijst gebruiken met find_in_set , hoewel dit voor grote datasets een aanzienlijke prestatie-impact zou hebben, aangezien elke waarde in de tabel naar een char-type moet worden gegoten.

Bijvoorbeeld:

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

Of, als derde optie, je zou een door de gebruiker gedefinieerde functie kunnen maken die de door komma's gescheiden lijst voor je splitst (zie http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Dit is waarschijnlijk de beste optie van de drie, vooral als je veel vragen hebt die afhankelijk zijn van in(...) clausules.



  1. Hoe maak je een logbestand aan in Oracle met PL/SQL?

  2. Ruby on Rails 3 Kan geen verbinding maken met lokale MySQL-server via socket '/tmp/mysql.sock' op OSX

  3. Fout bij het installeren van psycopg2==2.6.2

  4. Oracle datum naar string conversie