Това е същото, което беше зададено в този въпрос:Мога ли да свържа масив към условие IN()?
Отговорът беше, че за списък с променлив размер в in
клауза, ще трябва сами да изградите заявката.
Въпреки това, можете да използвате списъка с кавички, разделен със запетаи, като използвате find_in_set
, въпреки че за големи набори от данни това би имало значително въздействие върху производителността, тъй като всяка стойност в таблицата трябва да бъде прехвърлена към тип char.
Например:
select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)
Или, като трета опция, можете да създадете дефинирана от потребителя функция, която разделя списъка, разделен със запетая, вместо вас (вж. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids /
). Това вероятно е най-добрият вариант от трите, особено ако имате много заявки, които разчитат на in(...)
клаузи.