Bancos de Dados – Operadores IN e NOT IN no MySQL
Operadores IN e NOT IN no MySQL
O operador SQL IN permite verificar se um valor específico corresponde a algum valor presente em uma lista ou subconsulta, passada como parâmetro a uma cláusula de filtragem WHERE.
Sintaxe
SELECT coluna(s) FROM tabela WHERE expressão | coluna IN (valor1, valor2,...);
O operador IN retorna o valor 1 (true) se o valor da expressão ou da coluna na cláusula WHERE corresponder a qualquer um dos valores presentes na lista passada, e retorna 0 (false) se não houver nenhuma correspondência.
Operador NOT IN
Podemos combinar o operador In com o operador lógico NOT SQL para determinar se um valor NÃO corresponde com nenhum valor na lista ou subconsulta realizada:
SELECT coluna(s) FROM tabela WHERE expressão | coluna NOT IN (valor1, valor2,...);
Exemplos
1 – Retornar livros cujas editoras tem os códigos 2 ou 4:
SELECT NomeLivro, IdEditora FROM tbl_livro WHERE IdEditora IN (2,4);
2 – Retornar livros cuja edição não é a primeira nem a segunda:
SELECT NomeLivro, Edicao FROM tbl_livro WHERE Edicao NOT IN (1,2);
Operador IN e Subconsultas
O operador IN (e NOT IN) é empregado com muita frequência com uma subconsulta, em vez de uma lista de valores fornecida. Assim, a lista de valores a ser avaliada pelo operador IN é, na verdade, fornecida como resultado da subconsulta (subquery).
Sintaxe
SELECT coluna(s) FROM tabela WHERE expressão | coluna IN ( SELECT coluna(s) FROM tabela WHERE | GROUP BY | HAVING | ORDER BY );
Exemplo
3 – Retornar livros e IDs de editoras publicados pelas editoras Wiley ou Microsoft Press, sem usar joins:
SELECT NomeLivro, IdEditora FROM tbl_livro WHERE IdEditora IN ( SELECT IdEditora FROM tbl_editora WHERE NomeEditora = 'Wiley' OR NomeEditora = 'Microsoft Press' );
Próximo: Como excluir linhas de uma tabela com DELETE e TRUNCATE TABLE
Escreva um comentário