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

Wählen Sie Dinge aus, die nicht existieren

Nehmen wir an, Ihre Tags ('c', 'cg', 'rx') befinden sich in einer Tabelle namens tags_match mit der gleichen Struktur wie oben

dann könnten Sie dies tun:

select tr.name 
from tags as tl 
    right join tags_match as tr 
    on tl.name = tr.name
where tl.name is null

Dadurch werden alle Elemente in tags_match gefunden, die nicht in Tags enthalten sind, sodass Sie das gewünschte Ergebnis erhalten würden, aber leider befinden sich Ihre Tags ('c', 'cg','rx') nicht in einer Tabelle :(

Egal, wir können eine Unterabfrage verwenden, um die Tabelle zu 'fälschen'

select tr.name 
from tags as tl 
    right join (select 'cg' as name 
                union select 'c' as name 
                union select 'rx' as name) as tr 
    on tl.name = tr.name
where tl.name is null

Obwohl es ein wenig hässlich ist, wird dies funktionieren. Wenn Sie viele Elemente testen möchten, sollten Sie in Betracht ziehen, eine echte temporäre Tabelle zu erstellen.