Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giá trị ràng buộc PDO cho câu lệnh MySQL IN

Đâ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 đề.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận các bản ghi có giá trị tối đa cho từng nhóm kết quả SQL được nhóm lại

  2. Viết hoa chữ cái đầu tiên. MySQL

  3. Khám phá MySQL Binlog Server - Ripple

  4. Lỗi MySQL 1153 - Có gói lớn hơn byte 'max_allowed_packet'

  5. So sánh Percona XtraBackup với MySQL Enterprise Backup:Phần một