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

sự khác biệt giữa where_in và find_in_set

WHERE IN yêu cầu tập hợp giá trị phải được chỉ định theo nghĩa đen trong truy vấn, không phải là một giá trị duy nhất chứa một chuỗi được phân tách bằng dấu phẩy. Nếu bạn viết:

WHERE 6 IN (a.allowed_activity) 

nó sẽ xử lý a.allowed_activity chỉ là một giá trị duy nhất và so sánh nó với 6 , không phải là một tập hợp nhiều giá trị để tìm kiếm.

FIND_IN_SET tìm kiếm một chuỗi được phân tách bằng dấu phẩy cho giá trị.

Một cách khác để xem nó là IN là một phím tắt cho một loạt các = kiểm tra kết hợp với OR :

WHERE x IN (a, b, c, d)

là viết tắt của

WHERE x = a OR x = b OR x = c OR x = d

Khi bạn viết lại nó như thế này, bạn có thể thấy rõ ràng tại sao nó không hoạt động với một cột chứa một chuỗi được phân tách bằng dấu phẩy. Nó chỉ đơn giản là dịch

WHERE 6 IN (a.allowed_activity) 

tới:

WHERE 6 = a.allowed_activity


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC PreparedStatement dẫn đến lỗi cú pháp MySQL

  2. PDOException SQLSTATE [HY000] [2002] Không có tệp hoặc thư mục nào như vậy

  3. MySQL:Điều gì xảy ra với các trường không được tổng hợp trên một GROUP BY?

  4. PHP &MYSQL:sử dụng nhóm theo danh mục

  5. Cập nhật truy vấn không thành công với lỗi:1175