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);

Operador IN no MySQL

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 NOT IN no MySQL

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'
);

Operador IN com Subconsulta no MySQL

Próximo: Como excluir linhas de uma tabela com DELETE e TRUNCATE TABLE

 

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*