MySQL SELECT INTO variável

Resumo : neste tutorial, você aprenderá como usar o MySQL SELECT INTO variable para armazenar resultados de consultas em variáveis.

Introdução à instrução da variável SELECT INTO do MySQL

Para armazenar o conjunto de resultados de uma consulta em uma ou mais variáveis , você usa a SELECT INTO variableinstrução.

Aqui está a sintaxe da SELECT INTO variableinstrução:

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • c1, c2e c3são colunas ou expressões que você deseja armazenar em variáveis.
  • @v1, @v2, e @v3são as variáveis ​​que armazenam os valores de c1, c2, e c3.

O número de variáveis ​​deve ser igual ao número de colunas ou expressões na lista de seleção. Além disso, a consulta deve retornar zero ou uma linha.

Se a consulta não retornar nenhuma linha, o MySQL emitirá um aviso “sem dados” e os valores das variáveis ​​permanecerão inalterados.

Se a consulta retornar múltiplas linhas, o MySQL emitirá um erro. Para garantir que a consulta sempre retorne no máximo uma linha, use a LIMITcláusula para restringir o conjunto de resultados a uma única linha:

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition
LIMIT 1; -- ensure maximum one row returnedLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Exemplos de variáveis ​​MySQL SELECT INTO

Usaremos a customerstabela do banco de dados de exemplo para a demonstração:

1) Exemplo de variável única MySQL SELECT INTO

A instrução a seguir recupera a cidade do cliente com o número 103 e a armazena na @cityvariável:

SELECT 
    city
INTO
    @city
FROM 
    customers
WHERE 
    customerNumber = 103;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução a seguir exibe o conteúdo da @cityvariável:

SELECT @city;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------+
| @city  |
+--------+
| Nantes |
+--------+
1 row in set (0.01 sec)Linguagem de código:  JavaScript  ( javascript )

2) Exemplo MySQL SELECT INTO de múltiplas variáveis

Para armazenar valores da lista de seleção em diversas variáveis, você separa as variáveis ​​por vírgulas.

Por exemplo, a instrução a seguir recupera a cidade e o país do cliente número 103 e armazena os dados nas variáveis @city​​e @country:

SELECT 
    city,
    country 
INTO
    @city,
    @country
FROM 
    customers
WHERE 
    customerNumber = 103;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução a seguir mostra o conteúdo das variáveis @city​​e @country:

SELECT 
    @city, 
    @country;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------+----------+
| @city  | @country |
+--------+----------+
| Nantes | France   |
+--------+----------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

3) Variável MySQL SELECT INTO – corrigindo erro de múltiplas linhas

A instrução a seguir causa um erro porque a consulta retorna diversas linhas:

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Erro:

Error Code: 1172. Result consisted of more than one rowLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Para corrigir esse erro, você usa a LIMIT 1cláusula da seguinte forma:

SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103
LIMIT 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

4) Atribuindo uma expressão a uma variável

O exemplo a seguir recupera o nome completo do contato do ID de cliente 103 concatenando o nome e o sobrenome do contato. Em seguida, atribui o nome completo à @full_namevariável:

SELECT 
    CONCAT_WS('', contactFirstName, contactLastName)
INTO @full_name FROM
    customers
WHERE
    customerNumber = 103;

SELECT @full_name;Linguagem de código:  JavaScript  ( javascript )

Saída:

+----------------+
| @full_name     |
+----------------+
| Carine Schmitt |
+----------------+
1 row in set (0.00 sec)
Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a SELECT INTO variableinstrução para armazenar os resultados da consulta em uma ou mais variáveis.

Deixe um comentário

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