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

Mệnh đề IN biến MYSQL

Bạn sẽ muốn xem qua find_in_set() chức năng:

SELECT
    *
FROM
    your_table
WHERE
    NOT FIND_IN_SET(User.user_name, @valid_users);

Để điều này hoạt động, danh sách được phân tách bằng dấu phẩy không được chứa dấu ngoặc kép (trừ khi tên người dùng của bạn thực sự chứa dấu ngoặc kép) và không được đệm bằng dấu cách:

SET @valid_users := 'admin,jrock,kmicka,First Last';

Ví dụ về SqlFiddle

Để trả lời trực tiếp câu hỏi của bạn về "tại sao một biến trong NOT IN lại bộ lọc hoạt động ", đó là bởi vì @valid_users đang được coi là một chuỗi và khi bạn chuyển nó vào IN() , nó được coi là một chuỗi đơn (tức là không phải một tập hợp / danh sách). Với FIND_IN_SET() , nó xử lý chuỗi trong @valid_users dưới dạng một tập hợp / danh sách được phân tách bằng dấu phẩy và sử dụng nó cho phù hợp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu nhiều hình ảnh vào php mysql từ android nhưng chỉ có một hình ảnh được chèn

  2. Nhận bản ghi cuối cùng từ mysql

  3. Nhiều câu lệnh chèn trong ODBC ExecuteNonQuery (C #) đơn lẻ

  4. Đặt hàng trước COUNT mỗi giá trị

  5. Cách nhanh nhất để kết xuất đối tượng từ điển Python (dict) vào một bảng MySQL?