sql >> Databáze >  >> RDS >> Mysql

Jak načíst neodpovídající výsledky v mysql

Můžete použít left outer join jak toho dosáhnout:

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

To znamená, že si vezmete vaši první tabulku (table1 ), připojí ji k vaší druhé tabulce (table2 ) a vyplní null pro table2 sloupce v libovolném řádku v table1 který neodpovídá řádku v table2 . Poté to odfiltruje tak, že vybere pouze table1 řádky, kde nebyla nalezena žádná shoda.

Případně můžete také použít not exists :

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

Tím se provede left semi join a v podstatě udělá to samé, co left outer join dělá. V závislosti na vašich indexech může být jeden rychlejší než druhý, ale oba jsou životaschopné možnosti. MySQL má dobrou dokumentaci o optimalizaci spojení , takže byste to měli zkontrolovat..




  1. Neplatná výchozí hodnota pro pole časového razítka 'create_date'

  2. Analýza extrémně velkých souborů XML v php

  3. Hromadná aktualizace mysql pomocí příkazu where

  4. Načítání dat z databáze JDBC do Jtable