Ini adalah hal yang sama seperti yang ditanyakan dalam pertanyaan ini:Dapatkah saya mengikat array ke kondisi IN()?
Jawabannya adalah, untuk daftar ukuran variabel di in
klausa, Anda harus membuat kueri sendiri.
Namun, Anda dapat menggunakan daftar yang dipisahkan koma dengan tanda kutip menggunakan find_in_set
, meskipun untuk kumpulan data yang besar, ini akan memiliki dampak kinerja yang cukup besar, karena setiap nilai dalam tabel harus ditransmisikan ke jenis karakter.
Misalnya:
select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)
Atau, sebagai opsi ketiga, Anda dapat membuat fungsi yang ditentukan pengguna yang membagi daftar yang dipisahkan koma untuk Anda (lih. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids /
). Ini mungkin opsi terbaik dari ketiganya, terutama jika Anda memiliki banyak kueri yang mengandalkan in(...)
klausa.