Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So rufen Sie nicht übereinstimmende Ergebnisse in mysql ab

Sie können einen linken äußeren Join verwenden um dies zu erreichen:

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

Dazu wird Ihre erste Tabelle (table1 ), verbindet sie mit Ihrer zweiten Tabelle (table2 ) und füllt null aus für die table2 Spalten in einer beliebigen Zeile in table1 die mit keiner Zeile in table2 übereinstimmt . Dann filtert es das heraus, indem es nur table1 auswählt Zeilen, in denen keine Übereinstimmung gefunden werden konnte.

Alternativ können Sie auch existiert nicht :

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

Dadurch wird ein linker Semi-Join ausgeführt , und macht im Wesentlichen dasselbe wie der left outer join tut. Abhängig von Ihren Indizes kann einer schneller sein als der andere, aber beide sind praktikable Optionen. MySQL hat eine gute Dokumentation zum Optimieren der Joins , also sollten Sie das überprüfen..