Mysql
 sql >> база данни >  >> RDS >> Mysql

ИЗБИРАНЕ с множество условия WHERE в една и съща колона

Можете да използвате или GROUP BY и HAVING COUNT(*) = _ :

SELECT contact_id
FROM your_table
WHERE flag IN ('Volunteer', 'Uploaded', ...)
GROUP BY contact_id
HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list

(приемаме contact_id, flag е уникален).

Или използвайте съединения:

SELECT T1.contact_id
FROM your_table T1
JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded'
-- // more joins if necessary
WHERE T1.flag = 'Volunteer'

Ако списъкът с флагове е много дълъг и има много съвпадения, първото вероятно е по-бързо. Ако списъкът с флагове е кратък и има малко съвпадения, вероятно ще откриете, че вторият е по-бърз. Ако производителността е проблем, опитайте да тествате и двете върху данните си, за да видите кое работи най-добре.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'username'@'localhost' с помощта на CakePHP

  2. Как да съхранявате IPv6-съвместим адрес в релационна база данни

  3. Някакъв начин да изберете, без да причинявате заключване в MySQL?

  4. Как да конвертирате UTC в местно време в MySQL

  5. Как да намерите съпоставянията, поддържани от сървъра в MySQL