sql >> Database >  >> RDS >> Mysql

Hoe niet-overeenkomende resultaten op te halen in mysql

U kunt een linker buitenste join gebruiken om dit te bereiken:

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

Wat dit doet, is dat je eerste tafel nodig is (tabel1 ), voegt het samen met uw tweede tafel (table2 ), en vult null . in voor de tabel2 kolommen in een rij in tabel1 die niet overeenkomt met een rij in tabel2 . Vervolgens filtert het dat eruit door alleen de tabel1 . te selecteren rijen waar geen overeenkomst kon worden gevonden.

Als alternatief kunt u ook bestaat niet :

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

Dit voert een linkse semi-join uit , en zal in wezen hetzelfde doen als de linker buitenste join doet. Afhankelijk van uw indexen kan de ene sneller zijn dan de andere, maar beide zijn haalbare opties. MySQL heeft goede documentatie over het optimaliseren van de joins , dus je moet dat eens bekijken..




  1. Versleuteling gebruiken om PostgreSQL-databasebeveiliging te versterken

  2. Wizard Importeren/Exporteren gebruiken in SQL Server - SQL Server / TSQL-zelfstudie, deel 104

  3. Gegevens rechtstreeks vanuit Excel invoegen in Oracle Database

  4. Selecteer opties voor feeds uit DB, afhankelijk van andere selectieopties