Articles

MySQL IN

Resumo: neste tutorial, aprenderá como utilizar o MySQL IN operador para determinar se um valor especificado corresponde a qualquer valor numa lista ou numa subconsulta.

Introdução ao MySQL IN Operator

O operador IN permite-lhe determinar se um valor especificado corresponde a qualquer valor de um conjunto de valores ou devolvido por uma subconsulta.

O seguinte ilustra a sintaxe do IN operador:

SELECT column1,column2,...FROM table_nameWHERE (expr|column_1) IN ('value1','value2',...);
Code language: SQL (Structured Query Language) (sql)

Vamos examinar a consulta com mais detalhe:

  • Use a column ou uma expressão ( expr ) com a cláusula IN operador na WHERE.
  • separar os valores na lista por vírgulas (,).

O IN operador retorna 1 se o valor do column_1 ou o resultado do expr expressão for igual a qualquer valor da lista, caso contrário, retorna 0.

Quando os valores na lista são todos constantes, o MySQL executa os seguintes passos:

  • Primeiro, avaliar os valores com base no tipo da expressão column_1 ou resultado da expressão expr.
  • Segundo, ordenar os valores.
  • Terceiro, pesquisar o valor utilizando o algoritmo de pesquisa binária. Portanto, uma consulta que utiliza o operador IN com uma lista de constantes tem um desempenho muito rápido.

Nota que se o expr ou qualquer valor na lista é NULL, o IN operador retorna NULL.

p>É possível combinar o operador IN com o operador NOT para determinar se um valor não corresponde a nenhum valor de uma lista ou subconsulta. E também pode usar o operador IN no operador WHERE cláusula de outras declarações como UPDATE, e DELETE.

MySQL IN exemplos de operadores

P>Prática com alguns exemplos de utilização do operador IN. Ver o seguinte offices tabela da base de dados de amostras:

Tabela de escritórios

Se quiser encontrar os escritórios que se localizam nos EUA. e França, pode usar o operador IN como a seguinte consulta:

SELECT officeCode, city, phone, countryFROM officesWHERE country IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Try It Out

MySQL IN country list examplebr>Pode obter o mesmo resultado com o operador ORcomo a seguinte consulta:

SELECT officeCode, city, phoneFROM officesWHERE country = 'USA' OR country = 'France';
Code language: SQL (Structured Query Language) (sql)

Try It Out

Caso a lista tenha muitos valores, é necessário construir uma declaração muito longa com múltiplos operadores OR. Assim, o operador IN permite-lhe encurtar a consulta e torná-la mais legível.

Para obter escritórios que não se localizam nos EUA e França, usa a cláusula NOT IN na cláusula WHERE como se segue:

SELECT officeCode, city, phoneFROM officesWHERE country NOT IN ('USA' , 'France');
Code language: SQL (Structured Query Language) (sql)

Try It Out

MySQL NOT IN offices example

Usando o MySQL IN com uma subconsulta

O operador IN é frequentemente utilizado com uma subconsulta. Em vez de fornecer uma lista de valores literais, a subconsulta obtém uma lista de valores de uma ou mais tabelas e utiliza-os como valores de entrada do operador IN.

Vamos ver as tabelas orders e orderDetails da base de dados de amostras:

>

ordenar tabela de detalhes de encomenda

Por exemplo, se quiser encontrar as encomendas cujos valores totais são superiores a 60,000, utilize o operador IN como mostra a consulta seguinte:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN( SELECT orderNumber FROM orderDetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 60000);
Code language: SQL (Structured Query Language) (sql)

Try It Out

MySQL IN com exemplo de Subquery

A consulta acima pode ser dividida em duas consultas separadas.

P>Primeiro, a subconsulta retorna uma lista de números de ordem cujos valores são superiores a 60,000 usando as cláusulas GROUP BY e HAVING:

SELECT orderNumberFROM orderDetailsGROUP BY orderNumberHAVING SUM(quantityOrdered * priceEach) > 60000;
Code language: SQL (Structured Query Language) (sql)

Try It Out

MySQL IN subquery

p>Segundo, a consulta externa utiliza a cláusula IN operador na WHERE para obter dados da tabela orders:

SELECT orderNumber, customerNumber, status, shippedDateFROM ordersWHERE orderNumber IN (10165,10287,10310);
Code language: SQL (Structured Query Language) (sql)

Try It Out

Neste tutorial, aprendeu como utilizar o MySQL IN operador para determinar se um valor corresponde a qualquer valor de uma lista de valores.

  • Este tutorial foi útil?
  • Sim Não
  • Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *