|
Se você estiver escrevendo uma consulta que possui um valor que deseja verificar, pode ser uma cláusula WHERE simples para escrever:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = 'John';
E se você quiser encontrar registros que correspondam a várias condições?
Você pode usar a palavra-chave OR para verificar se um valor corresponde a um ou mais valores.
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = 'John'
OR first_name = 'Mary'
OR first_name = 'Susan';
Isso não é tão ruim quando há apenas uma pequena lista.
Mas pode ficar confuso quando a lista fica mais longa.
Certamente há uma maneira melhor!
Sim existe!
É chamada de palavra-chave IN.
A palavra-chave SQL IN
A palavra-chave IN no SQL permite verificar se uma expressão corresponde a algum dos
valores especificados, em um único critério.
Evita a necessidade de muitas cláusulas WHERE separadas e tem algumas outras vantagens.
Você usa a palavra-chave IN, com alguns colchetes, e especifica seus valores dentro desses colchetes.
WHERE expressão IN (valor_1, valor_n….)
Você pode colocar muitos valores dentro dos colchetes – até 1.000, na verdade.
Portanto, para reescrever o exemplo anterior para usar a cláusula IN, ficaria assim:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name IN ('John', 'Mary', 'Susan');
Isso mostrará todos os clientes que têm o primeiro nome de John, Mary ou Susan.
Isso executará uma correspondência "igual a".
Ele verificará se o first_name é igual a algum desses valores.
Se você deseja executar outros operadores, como maior que, leia a seção ANY e ALL abaixo.
Então, por que você usaria a palavra-chave IN?
- É mais fácil digitar quando você tem mais de um valor para verificar.
- É mais fácil adicionar e remover valores de sua consulta, em vez de remover linhas inteiras de uma cláusula WHERE.
- Ele pode ser usado com vários valores de subconsultas.
Uma maneira comum de usar a cláusula IN é usar subconsultas. Terei um guia sobre subconsultas em breve que se aprofundará nesse tópico, mas uma subconsulta
é uma consulta dentro de outra consulta.
Usá-lo com uma palavra-chave IN pode ser assim:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name IN (
SELECT first_name
FROM common_names );
Isso significa que todos os valores first_name na tabela common_names serão usados como entrada na cláusula WHERE da tabela customer.
Agora, este pode não ser o exemplo mais realista, mas é usado apenas para demonstrar o conceito.
A palavra-chave SQL NOT IN
Acabamos de ver a palavra-chave IN, que verifica se um valor corresponde a um intervalo de valores.
E se quisermos encontrar registros que não correspondem a um intervalo de valores?
Podemos fazer isso com a palavra-chave NOT IN.
No SQL, muitas das palavras-chave podem ser invertidas adicionando a palavra NOT antes delas, como você verá neste artigo.
Assim, enquanto o IN age como um = em vários valores, o NOT IN age como um <> em vários valores.
WHERE expressão NOT IN (valor_1, valor_n…)
Assim como o IN, você pode colocar até 1.000 valores dentro da cláusula NOT IN.
Digamos que você tenha uma consulta como esta:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name <> 'John'
AND first_name <> 'Mary'
AND first_name <> 'Susan';
Isso localizaria todos os registros do cliente em que o nome não é John, nem Mary e nem Susan.
Este exemplo usa AND porque queremos encontrar registros que não correspondam a todos esses valores.
Podemos converter isso em NOT IN adicionando os valores dentro dos colchetes.
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name NOT IN ('John', 'Mary', 'Susan');
Isso nos mostraria os mesmos resultados.
NOT IN também pode ser usado com subconsultas da mesma forma que IN:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name NOT IN (
SELECT first_name
FROM common_names );
Isso significa que todos os valores first_name na tabela common_names serão usados como uma entrada na cláusula WHERE da tabela customer, e todos os
registros do cliente que não corresponderem a esses valores serão retornados.
Mais Informações
Aqui estão mais alguns recursos para aprender sobre IN:
Copyright de Ben Brumm - DatabaseStar
|