Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyszukiwanie MySQL dla 1,2,3,11,22,33 w terenie

Po pierwsze, używanie wartości oddzielonych przecinkami w polu jest problematyczne i zamiast tego powinieneś rozważyć przechowywanie ich w oddzielnej tabeli. Wtedy możesz uzyskać rekord bardziej efektywnie:

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

Jeśli nie jest to możliwe, musisz wybrać powolny sposób dopasowywania ciągów. Aby dopasować wartości w ciągu oddzielonym przecinkami, możesz użyć like operator:

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

Umieszczenie separatora po obu stronach szukanej wartości zapewnia, że ​​nie otrzymasz żadnych fałszywych alarmów. Dodanie przecinków przed i po wartości pola daje pewność, że znajdziesz pierwszą i ostatnią wartość.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. konsekwencje zmiany silnika pamięci masowej mysql podczas pracy aplikacji w środowisku produkcyjnym

  2. Monitorowanie postępu długich zapytań MySQL

  3. Błąd połączenia SSL podczas łączenia się z RDS MySQL z Django

  4. Dlaczego ten przykład wyboru aktualizacji działa?

  5. Zapytanie SQL:lista wszystkich identyfikatorów, które były aktywne w określonym przedziale czasu, posortowane według czasu rozpoczęcia