Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Вземете записи, които отговарят на условията, идващи от множество записи

За въпрос: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

ако уникалността не е била наложена на ProductID за всеки CustomerID , DISTINCT е необходима ключова дума,

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

За втория въпрос, "..A и C и D, но не B и 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')
        )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Показване на всички дати между тях, дори и да няма резултат

  2. JDBC връща грешен брой засегнати редове

  3. Как данните се подреждат в MySql по подразбиране

  4. mysql_fetch_array добавя всички редове?

  5. Как да вмъкна utf-8 mb4 символ (емоджи в ios5) в mysql?