Bóson Treinamentos em Ciência e Tecnologia

Bancos de Dados – Operadores IN e NOT IN no MySQL

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

 

Sair da versão mobile