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

Truy vấn Mysql nâng cao để lấy bản ghi chính nếu hai điều kiện khớp trên các hàng bản ghi con khác nhau

Thật vậy, như AsConfused đã gợi ý, bạn cần hai phép nối vào TABLE2 bằng bí danh

- both of these are tested :

-- find t1 where it has 2 and 7 in t2

    select t1.*
    from table1 t1
    join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
    join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7

-- find t1 where it has 2 and 7 in t2, and no others in t2

select t1.*, ovx.id
    from table1 t1
      join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
      join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7
      LEFT OUTER JOIN table2 ovx on t1.id=ovx.masterid and ovx.optionValue not in (2,7)
    WHERE ovx.id 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. Đặt hàng theo HasMany mối quan hệ Laravel 5

  2. mySQL CAST và ASC / DESC

  3. Kết nối với MySQL Server trên localhost thông qua Docker

  4. Cập nhật nếu tồn tại, chèn nếu không tồn tại

  5. Cách lưu trữ dữ liệu bằng unicode bằng ngôn ngữ tiếng Hin-ddi