Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecione de volta coisas que não existem


vamos supor que suas tags ('c', 'cg','rx') estão em uma tabela chamada tags_match com a mesma estrutura acima

então você poderia fazer isso:
select tr.name 
from tags as tl 
    right join tags_match as tr 
    on tl.name = tr.name
where tl.name is null

Isso encontrará todos os itens em tags_match que não estão em tags, então isso daria o resultado desejado, mas infelizmente suas tags ('c', 'cg','rx') não estão em uma tabela :(

Não importa, podemos usar uma subconsulta para 'falsificar' a tabela
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

Embora seja um pouco feio, isso funcionará. Se você tiver muitos itens que deseja testar, considere criar uma tabela temporária real.