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

SQL:Hent poster, der opfylder betingelser, der kommer fra flere poster

For spørgsmål:få en liste over kunder, der har købt både A og B

SELECT  CustomerID
FROM    CustomerList
WHERE   ProductID IN ('A', 'B')
GROUP   BY CustomerID
HAVING  COUNT(*) = 2

hvis entydighed ikke blev håndhævet på ProductID for hver Kunde-ID , DISTINCT søgeord er påkrævet,

SELECT  CustomerID
FROM    CustomerList
WHERE   ProductID IN ('A', 'B')
GROUP   BY CustomerID
HAVING  COUNT(DISTINCT ProductID ) = 2

For det andet spørgsmål, "..A og C og D, men ikke B og E og F"

SELECT  CustomerID
FROM    CustomerList
WHERE   ProductID IN ('A', 'C', 'D')
GROUP   BY CustomerID
HAVING  COUNT(*) = 3 AND
        CustomerID NOT IN
        (
            SELECT  CustomerID
            FROM    CustomerList
            WHERE   ProductID IN ('B','E','F')
        )


  1. Er substr eller LIKE hurtigere i Oracle?

  2. GROUP_CONCAT i SQLite

  3. ADO.NET-udbyderen 'Oracle.ManagedDataAccess.Client' er enten ikke registreret i maskinens eller applikationens konfigurationsfil eller kunne ikke indlæses

  4. Sammenligning af Galera Cluster Cloud-tilbud:Del 1 Amazon AWS