sql >> Database teknologi >  >> RDS >> Mysql

SELECTING med flere WHERE-betingelser i samme kolonne

Du kan enten bruge GROUP BY og 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

(forudsat contact_id, flag er unik).

Eller brug joins:

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'

Hvis listen over flag er meget lang, og der er mange kampe, er den første sandsynligvis hurtigere. Hvis listen over flag er kort, og der er få kampe, vil du sandsynligvis opdage, at den anden er hurtigere. Hvis ydeevne er et problem, prøv at teste begge dele på dine data for at se, hvad der virker bedst.



  1. SQL Server SELECT ind i eksisterende tabel

  2. Dårlig praksis i databasedesign

  3. Logisk visning af datamodellen i R12.2

  4. Sikkerhedskopier dine MySQL-databaser