Описание: в этой статье вы узнаете, как использовать переменную SELECT INTO в MySQL для хранения результатов запроса в переменных.
Синтаксис переменной SELECT INTO в MySQL
Чтобы сохранить результат запроса в одной или нескольких переменных , используйте синтаксис переменной SELECT INTO:
SELECT c1, c2, c3, ... INTO @v1, @v2, @v3,... FROM table_name WHERE condition;
В этом синтаксисе:
- c1, c2 и c3 – это столбцы или выражения, которые вы хотите выбрать и сохранить в переменных.
- @ v1, @ v2 и @ v3 – это переменные, в которых хранятся значения из c1, c2 и c3.
Количество переменных должно совпадать с количеством столбцов или выражений в списке выбора. Кроме того, запрос должен возвращать ноль или одну строку.
Если запрос не возвращает строк, MySQL выдает предупреждение об отсутствии данных и значение переменных остается неизменным.
Если запрос возвращает несколько строк, MySQL выдает ошибку. Чтобы запрос всегда возвращал максимум одну строку, используйте условие LIMIT 1, чтобы ограничить результирующий набор одной строкой.
Примеры переменной SELECT INTO в MySQL
Мы будем использовать таблицу customers в примере базы данных для демонстрации.
Пример одной переменной SELECT INTO в MySQL
Следующий оператор получает город клиента с номером 103 и сохраняет его в переменной @city:
SELECT city INTO @city FROM customers WHERE customerNumber = 103;
Следующий оператор отображает содержимое переменной @city:
SELECT @city;
Пример нескольких переменных SELECT INTO в MySQL
Чтобы сохранить значения из списка выбора в несколько переменных, вы разделяете переменные запятыми. Например, следующий оператор находит город и страну клиента с номером 103 и сохраняет данные в двух соответствующих переменных @city и @country:
SELECT city, country INTO @city, @country FROM customers WHERE customerNumber = 103;
Следующий оператор показывает содержимое переменных @city и @country:
SELECT @city, @country;
Пример нескольких строк SELECT INTO в MySQL
Следующая инструкция вызывает ошибку, потому что запрос возвращает несколько строк:
SELECT creditLimit INTO @creditLimit FROM customers WHERE customerNumber > 103;/
Вот вывод:
Error Code: 1172. Result consisted of more than one row
Чтобы исправить это, вы используете следующее предложение LIMIT 1:
SELECT creditLimit INTO @creditLimit FROM customers WHERE customerNumber > 103 LIMIT1;
В этой статье вы узнали, как использовать синтаксис переменной SELECT INTO в MySQL для хранения результата запроса результата в одной или нескольких переменных.