O operador except compara resultados de duas (ou mais) instruções select e retornar a diferença elas. Resumindo, o operador except subtrai o resultados de dois selects.
As colunas das instruções select devem atender às seguintes regras:
- O número e a ordem das colunas devem ser os mesmos nos select.
- Os tipos de dados das colunas correspondentes devem ser os mesmos.
Sintaxe do Operador EXCEPT
Usamos o operador except da seguinte forma:
select... except select....;
Acima, colocamos o except entre os selct
Tabelas a Serem Usadas nos Exemplos
Usaremos as tabelas guests e vips do banco de dados nation que baixamos pronta no artigo: Baixando Exemplo de Banco de Dados.
As duas tabelas têm esse conteúdo:
Tabela guests
MariaDB [nation]> select * from guests; +----------+--------+ | guest_id | name | +----------+--------+ | 1 | John | | 2 | Jane | | 3 | Jean | | 4 | Storm | | 5 | Beast | | 6 | | | 7 | silvia | | 8 | maria | +----------+--------+
Tabela vips
MariaDB [nation]> select * from vips; +--------+-----------+ | vip_id | name | +--------+-----------+ | 1 | Jane | | 2 | Charles | | 3 | John | | 4 | Wolverine | | 5 | Rogue | | 6 | | | 7 | maria | | 8 | silvia | +--------+-----------+
Exemplos de Uso do Operador EXCEPT em SQL
#1 abaixo é usado o operador except para encontrar os nomes que não estão na tabela vips:
MariaDB [nation]> select name from guests except select name from vips; +-------+ | name | +-------+ | Jean | | Storm | | Beast | +-------+