Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:obtenha registros que satisfaçam as condições provenientes de vários registros


Para a pergunta: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

se a exclusividade não foi aplicada em ProductID para cada CustomerID , DISTINCT palavra-chave é necessária,
SELECT  CustomerID
FROM    CustomerList
WHERE   ProductID IN ('A', 'B')
GROUP   BY CustomerID
HAVING  COUNT(DISTINCT ProductID ) = 2

Para a segunda pergunta, "..A e C e D, mas não B e E e 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')
        )