Đây là điều tương tự như đã được hỏi trong câu hỏi này: Tôi có thể liên kết mảng với điều kiện IN () không?
Câu trả lời là ở đó, đối với danh sách có kích thước thay đổi trong in
, bạn sẽ cần tự tạo truy vấn.
Tuy nhiên, bạn có thể sử dụng danh sách được trích dẫn, được phân tách bằng dấu phẩy bằng find_in_set
, mặc dù đối với các tập dữ liệu lớn, điều này sẽ có tác động đáng kể đến hiệu suất, vì mọi giá trị trong bảng phải được chuyển thành kiểu char.
Ví dụ:
select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)
Hoặc, như một tùy chọn thứ ba, bạn có thể tạo một hàm do người dùng xác định để chia danh sách được phân tách bằng dấu phẩy cho bạn (xem http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids /
). Đây có lẽ là tùy chọn tốt nhất trong ba tùy chọn, đặc biệt nếu bạn có nhiều truy vấn dựa vào in(...)
mệnh đề.