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

Jak pobrać niepasujące wyniki w mysql

Możesz użyć left outer join aby to osiągnąć:

select
    t1.tid
from
    table1 t1
    left outer join table2 t2 on
        t1.tid = t2.tid
where
    t2.tid is null

To, co to robi, to zabranie twojej pierwszej tabeli (table1 ), łączy go z drugą tabelą (table2 ) i wypełnia null dla table2 kolumny w dowolnym wierszu w table1 który nie pasuje do wiersza w table2 . Następnie filtruje to, wybierając tylko table1 wiersze, w których nie znaleziono dopasowania.

Alternatywnie możesz również użyć not exists :

select
    t1.tid
from
    table1 t1
where
    not exists (select 1 from table2 t2 where t2.tid = t1.tid)

To wykonuje left semi join , i zasadniczo zrobi to samo, co left outer join robi. W zależności od indeksów jeden może być szybszy od drugiego, ale oba są realnymi opcjami. MySQL ma dobrą dokumentację na temat optymalizacji złączeń , więc powinieneś to sprawdzić.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL - używając SUMA z COUNT

  2. Czy Python obsługuje przygotowane instrukcje MySQL?

  3. MySQL niewłaściwie skonfigurowany Przyczyna:niebezpieczne użycie ścieżki względnej

  4. Jak zbudować dynamiczne zapytanie przez powiązanie parametrów w node.js-sql?

  5. Funkcja MySQL TAN() – zwraca tangens wartości w MySQL