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

Trả về các bản ghi cha với các bản ghi con bằng các giá trị cụ thể VÀ trong đó tổng tập các bản ghi con cho một cha mẹ nhất định bằng một giá trị cụ thể

Truy vấn như bạn đã yêu cầu là:

SELECT  parent.item1, parent.item2, parent.index
FROM    parent
INNER JOIN
        child
ON      child.index = parent.index
GROUP BY
        parent.item1, parent.item2, parent.index
HAVING  SUM(CASE WHEN child.value IN (1111111, 2222222) THEN 1 ELSE 0 END) = 2
        AND COUNT(*) <= 2

Nếu bạn chỉ muốn đảm bảo rằng trẻ em khớp với tất cả các giá trị trong IN và không có danh sách nào không có trong danh sách, hãy sử dụng cái này (trong SQL Server )

SELECT  *
FROM    parent p
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    (
                SELECT  value
                FROM    child c
                WHERE   c.index = p.index
                ) c
        FULL JOIN
                (
                SELECT  11111111 AS value
                UNION ALL
                SELECT  22222222
                ) q
        ON      c.value = q.value
        WHERE   c.value IS NULL OR q.value IS NULL
        )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bạn giới hạn nhóm theo hàng trong truy vấn mysql?

  2. câu lệnh sql phức tạp đến các hàng khác nhau

  3. Truy vấn MySQL dựa trên đầu vào của người dùng

  4. Hibernate ManyToMany lựa chọn

  5. Google App Script JDBC / MySql:bạn không phải là chủ sở hữu của lỗi chuỗi