Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :obtenir des enregistrements qui satisfont aux conditions provenant de plusieurs enregistrements

Pour la question :get a list of customers who bought both A and B

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

si l'unicité n'était pas appliquée sur ProductID pour chaque CustomerID , DISTINCT mot-clé est requis,

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

Pour la deuxième question, "..A et C et D mais pas B et E et 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')
        )