Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez les choses qui n'existent pas

supposons que vos balises ('c', 'cg','rx') sont dans une table appelée tags_match avec la même structure que ci-dessus

alors vous pourriez faire ceci :

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

Cela trouvera tous les éléments dans tags_match qui ne sont pas dans des balises, donc cela vous donnerait le résultat souhaité, mais malheureusement vos balises ('c', 'cg','rx') ne sont pas dans une table :(

Peu importe, nous pouvons utiliser une sous-requête pour "simuler" la table

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

Bien que ce soit un peu moche, cela fonctionnera. Si vous avez de nombreux éléments à tester, vous pouvez envisager de créer une véritable table temporaire.