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

Tìm kiếm MySQL cho 1,2,3,11,22,33 trong trường

Trước hết, việc sử dụng các giá trị được phân tách bằng dấu phẩy trong một trường là một vấn đề và thay vào đó, bạn nên cân nhắc việc lưu trữ chúng trong một bảng riêng. Sau đó, bạn có thể lấy bản ghi hiệu quả hơn:

select ...
from mainTable t
inner join valueTable v1 on v1.id = t.id and v1.value = 1
inner join valueTable v2 on v2.id = t.id and v2.value = 2
inner join valueTable v3 on v3.id = t.id and v3.value = 3

Nếu điều đó là không thể, bạn phải đi theo cách kết hợp chuỗi chậm. Để khớp các giá trị trong một chuỗi được phân tách bằng dấu phẩy, bạn có thể sử dụng like nhà điều hành:

... where
  concat(',', someField, ',') like '%,1,%' and
  concat(',', someField, ',') like '%,2,%' and
  concat(',', someField, ',') like '%,3,%'

Đặt dấu phân tách ở cả hai phía của giá trị được tìm kiếm đảm bảo rằng bạn không nhận được bất kỳ kết quả dương tính giả nào. Thêm dấu phẩy trước và sau giá trị trường đảm bảo rằng bạn có thể tìm thấy giá trị đầu tiên và giá trị cuối cùng.



  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àm thế nào để phân tích cú pháp trong PHP và lưu trữ trong cơ sở dữ liệu?

  2. tạo trình kích hoạt trên các cơ sở dữ liệu khác nhau

  3. Kết nối MySQL từ JSP

  4. Bạn có thể sử dụng lại tập kết quả mysql trong PHP không?

  5. Truy xuất thứ bậc từ một bảng như thế này