Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pencarian MySQL untuk 1,2,3,11,22,33 di bidang

Pertama-tama, menggunakan nilai yang dipisahkan koma di bidang bermasalah, dan Anda harus mempertimbangkan untuk menyimpannya di tabel terpisah. Maka Anda bisa mendapatkan rekaman dengan lebih efisien:

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

Jika itu tidak memungkinkan, Anda harus menggunakan cara pencocokan string yang lambat. Untuk mencocokkan nilai dalam string yang dipisahkan koma, Anda dapat menggunakan like operator:

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

Menempatkan pemisah di kedua sisi nilai yang dicari memastikan bahwa Anda tidak mendapatkan hasil positif palsu. Menambahkan koma sebelum dan sesudah nilai bidang memastikan bahwa Anda dapat menemukan nilai pertama dan terakhir.



  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:Bagaimana cara INNER JOIN sebuah tabel tetapi batasi bergabung dengan 1 hasil dengan suara atau hitungan tertinggi?

  2. Penyortiran MySQL dengan simbol sebagai huruf pertama

  3. GPL dan libmysqlclient

  4. Bagaimana cara membuat installer setelah selesai dengan Aplikasi Java Desktop dengan MySQL DB?

  5. Menghubungkan ke database pihak ketiga di Joomla?