Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mệnh đề tương đương CHỈ TRONG () MySQL

vấn đề này được gọi là Relational Division

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN ('$string')
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = ? -- <<== number of chocolates specified

ví dụ:

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(DISTINCT chocolate_id) = 4

tuy nhiên, nếu chocolate_id là duy nhất cho mọi boy_id , DISTINCT từ khóa là tùy chọn.

SELECT boy_id 
FROM   boys_chocolates 
WHERE  chocolate_id IN (1,2,3,4)
GROUP  BY boy_id 
HAVING COUNT(*) = 4

CẬP NHẬT 1

... Tôi muốn chọn những chàng trai trong bàn có chính xác loại sôcôla mà tôi đề cập. Không hơn không kém ...

SELECT boy_id 
FROM   boys_chocolates a
WHERE  chocolate_id IN (1,2,3,4) AND
        EXISTS 
        (
            SELECT  1
            FROM    boys_chocolates b
            WHERE   a.boy_ID = b.boy_ID
            GROUP   BY boy_id
            HAVING  COUNT(DISTINCT chocolate_id) = 4
        )
GROUP  BY boy_id
HAVING COUNT(*) = 4



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mẫu kết nối cơ sở dữ liệu PHP singleton

  2. Sắp xếp các bản ghi truy vấn SQL theo tần suất

  3. mysql_num_rows () mong muốn tham số 1 là tài nguyên, boolean đã cho

  4. MYSQL - Nhóm theo giới hạn

  5. Laravel 5.1 Migration and Seeding Không thể cắt bớt một bảng được tham chiếu trong một ràng buộc khóa ngoại