MySQL IN

Resumo : neste tutorial, você aprenderá como usar INo operador MySQL para determinar se um valor especificado corresponde a qualquer valor em uma lista de valores.

Introdução ao operador MySQL IN

O INoperador permite determinar se um valor corresponde a qualquer valor em uma lista de valores. Aqui está a sintaxe do INoperador:

value IN (value1, value2, value3,...)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O INoperador retorna 1 (verdadeiro) se for valueigual a qualquer valor na lista ( value1, value2, value3,…). Caso contrário, ele retorna 0.

Nesta sintaxe:

  • Primeiro, especifique o valor a ser testado no lado esquerdo do INoperador. O valor pode ser uma coluna ou uma expressão.
  • Segundo, especifique uma lista de valores separados por vírgula para correspondência entre parênteses.

O INoperador é funcionalmente equivalente a uma combinação de vários ORoperadores:

value = value1 OR value = value2 OR value = value3 OR ...Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O exemplo a seguir retorna 1 porque 1 está na lista:

SELECT 1 IN (1,2,3);
+--------------+
| 1 IN (1,2,3) |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

O exemplo a seguir retorna 0 porque 4 não está na lista:

SELECT 4 IN (1,2,3);
+--------------+
| 4 IN (1,2,3) |
+--------------+
|            0 |
+--------------+
1 row in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Na prática, você usará o INoperador para formar condições em uma WHEREcláusula das instruções SELECT, DELETEe UPDATE. Além disso, você usará o INoperador em uma consulta que contenha uma subconsulta .

Operador MySQL IN e NULL

Geralmente, o INoperador retorna NULLem dois casos:

  • O valuelado esquerdo do operador é NULL.
  • O valor não é igual a nenhum valor na lista e um dos valores na lista é NULL.

O exemplo a seguir retorna NULL porque o valor do lado esquerdo do operador IN é NULL:

SELECT NULL IN (1,2,3);Linguagem de código:  PHP  ( php )
+-----------------+
| NULL IN (1,2,3) |
+-----------------+
|            NULL |
+-----------------+
1 row in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

O exemplo a seguir também retorna NULL porque 0 não é igual a nenhum valor na lista e a lista possui um NULL:

SELECT 0 IN (1 , 2, 3, NULL);Linguagem de código:  PHP  ( php )
+-----------------------+
| 0 IN (1 , 2, 3, NULL) |
+-----------------------+
|                  NULL |
+-----------------------+
1 row in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

O exemplo a seguir também retorna NULL porque NULL não é igual a nenhum valor na lista e a lista possui um NULL. Observe que NULL não é igual a NULL.

SELECT NULL IN (1 , 2, 3, NULL);Linguagem de código:  PHP  ( php )

Exemplos de operadores MySQL IN

Consulte a officestabela a seguir do banco de dados de exemplo :

Operador MySQL IN - Tabela de exemplo

O exemplo a seguir utiliza a INoperadora para localizar os escritórios localizados nos EUA e na França:

SELECT 
    officeCode, 
    city, 
    phone, 
    country
FROM
    offices
WHERE
    country IN ('USA' , 'France');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+------------+---------------+-----------------+---------+
| officeCode | city          | phone           | country |
+------------+---------------+-----------------+---------+
| 1          | San Francisco | +1 650 219 4782 | USA     |
| 2          | Boston        | +1 215 837 0825 | USA     |
| 3          | NYC           | +1 212 555 3000 | USA     |
| 4          | Paris         | +33 14 723 4404 | France  |
+------------+---------------+-----------------+---------+
4 rows in set (0.01 sec)Linguagem de código:  texto simples  ( texto simples )

Você também pode obter o mesmo resultado com o ORoperador assim:

SELECT 
    officeCode, 
    city, 
    phone
FROM
    offices
WHERE
    country = 'USA' OR country = 'France';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

Caso a lista tenha muitos valores, é necessário construir uma instrução muito longa com vários OR operadores. Conseqüentemente, o INoperador permite encurtar a consulta e torná-la mais legível.

Resumo

  • Use o INoperador para verificar se um valor está em um conjunto de valores.
  • Use o INoperador para formar uma condição para a WHEREcláusula.

Deixe um comentário

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