Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zaawansowane zapytanie Mysql, aby uzyskać rekord główny, jeśli dwa warunki pasują do różnych wierszy rekordów podrzędnych

Rzeczywiście, jak zasugerował AsConfused, potrzebujesz dwóch sprzężeń do TABLE2 przy użyciu aliasów

-- 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. MySQL SecureString jako ciąg połączenia

  2. Jak zaktualizować wiele kolumn w MySQL

  3. MySQL scal 2 zestawy wyników z wyłączeniem rekordów w pierwszym

  4. php json_encode mysql wynik

  5. Pentaho Data Integration (najnowsza wersja) - Nie wykrywa sterownika MySQL