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

FIND_IN_SET với nhiều giá trị

FIND_IN_SET() chỉ có thể được sử dụng để tìm kiếm một giá trị duy nhất trong danh sách được phân tách bằng dấu phẩy, nó không hoạt động với hai danh sách.

Bạn sẽ cần gọi nó riêng cho từng giá trị.

SELECT * FROM tablename
WHERE FIND_IN_SET('12', category_id) OR FIND_IN_SET('13', category_id) OR FIND_IN_SET('15', category_id)

Sẽ tốt hơn nếu bạn chuẩn hóa lược đồ của mình thay vì sử dụng các danh sách được phân tách bằng dấu phẩy. Nếu bạn tạo một bảng nhiều-nhiều với các ID danh mục, bạn có thể thực hiện:

SELECT t1.*
FROM tablename AS t1
JOIN item_categories AS c ON t1.id = c.table_id
WHERE c.category_id IN (12, 13, 15)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL IF ELSEIF trong truy vấn chọn

  2. php imap - lấy nội dung và tạo văn bản thuần túy

  3. MYSQL - Ghép hai bảng

  4. Cách thay đổi thư mục dữ liệu MySQL / MariaDB mặc định trong Linux

  5. MySQL - lựa chọn thay thế cho các truy vấn con lồng nhau khi giới hạn dữ liệu tổng hợp trong một truy vấn con tương quan