Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona indietro le cose che non esistono

supponiamo che i tuoi tag ('c', 'cg', 'rx') siano in una tabella chiamata tags_match con la stessa struttura di cui sopra

allora potresti farlo:

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

Questo troverà tutti gli elementi in tags_match che non sono nei tag, quindi questo ti darebbe il risultato desiderato, ma sfortunatamente i tuoi tag ('c', 'cg','rx') non sono in una tabella :(

Non importa, possiamo usare una sottoquery per "falsificare" la tabella

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

Anche se è un po' brutto, funzionerà. Se hai molti elementi che vuoi testare, potresti prendere in considerazione la creazione di una vera tabella temporanea.