sql >> Database >  >> RDS >> Mysql

SELECTEREN met meerdere WHERE-voorwaarden in dezelfde kolom

U kunt ofwel GROUP BY . gebruiken en HAVING COUNT(*) = _ . HEBBEN :

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

(ervan uitgaande dat contact_id, flag is uniek).

Of gebruik 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'

Als de lijst met vlaggen erg lang is en er zijn veel overeenkomsten, is de eerste waarschijnlijk sneller. Als de lijst met vlaggen kort is en er weinig overeenkomsten zijn, zult u waarschijnlijk merken dat de tweede sneller is. Als prestaties een probleem zijn, probeer dan beide op uw gegevens te testen om te zien welke het beste werkt.



  1. PostgreSQL - query van bash-script als databasegebruiker 'postgres'

  2. Het verzoek is mislukt of de service heeft niet tijdig gereageerd?

  3. Verschillende manieren om de gebruikers van MySQL te vullen

  4. Node.js MSSQL tedius ConnectionError:kan geen verbinding maken met localhost:1433 - verbinding maken ECONNREFUSED