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.