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 variable
instrução.
Aqui está a sintaxe da SELECT INTO variable
instruçã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
,c2
ec3
são colunas ou expressões que você deseja armazenar em variáveis.@v1
,@v2
, e@v3
são as variáveis que armazenam os valores dec1
,c2
, ec3
.
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 LIMIT
clá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 returned
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Exemplos de variáveis MySQL SELECT INTO
Usaremos a customers
tabela 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 @city
variá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 @city
variá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 row
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para corrigir esse erro, você usa a LIMIT 1
clá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_name
variá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 variable
instrução para armazenar os resultados da consulta em uma ou mais variáveis.