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

WYBIERANIE z wieloma warunkami WHERE w tej samej kolumnie

Możesz użyć GROUP BY i 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

(zakładając, że contact_id, flag jest unikalny).

Lub użyj złączeń:

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'

Jeśli lista flag jest bardzo długa i jest dużo dopasowań, pierwszy jest prawdopodobnie szybszy. Jeśli lista flag jest krótka i jest mało dopasowań, prawdopodobnie okaże się, że druga jest szybsza. Jeśli wydajność jest problemem, spróbuj przetestować oba na swoich danych, aby zobaczyć, który działa najlepiej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić wybraną pozycję w rozwijanym polu?

  2. mySQL — Utwórz nową tabelę przy użyciu danych i kolumn z trzech tabel

  3. Cronjob czy MySQL?

  4. Policz liczbę unikalnych wartości

  5. MySQL w chmurze — migracja online z Amazon RDS na własny serwer:część 2