Описание: в этой статье вы узнаете, как использовать переменную SELECT INTO в MySQL для хранения результатов запроса в переменных.
Чтобы сохранить результат запроса в одной или нескольких переменных , используйте синтаксис переменной SELECT INTO:
SELECT c1, c2, c3, ... INTO @v1, @v2, @v3,... FROM table_name WHERE condition;
В этом синтаксисе:
Количество переменных должно совпадать с количеством столбцов или выражений в списке выбора. Кроме того, запрос должен возвращать ноль или одну строку.
Если запрос не возвращает строк, MySQL выдает предупреждение об отсутствии данных и значение переменных остается неизменным.
Если запрос возвращает несколько строк, MySQL выдает ошибку. Чтобы запрос всегда возвращал максимум одну строку, используйте условие LIMIT 1, чтобы ограничить результирующий набор одной строкой.
Мы будем использовать таблицу customers в примере базы данных для демонстрации.
Следующий оператор получает город клиента с номером 103 и сохраняет его в переменной @city:
SELECT city INTO @city FROM customers WHERE customerNumber = 103;
Следующий оператор отображает содержимое переменной @city:
SELECT @city;
Чтобы сохранить значения из списка выбора в несколько переменных, вы разделяете переменные запятыми. Например, следующий оператор находит город и страну клиента с номером 103 и сохраняет данные в двух соответствующих переменных @city и @country:
SELECT city, country INTO @city, @country FROM customers WHERE customerNumber = 103;
Следующий оператор показывает содержимое переменных @city и @country:
SELECT @city, @country;
Следующая инструкция вызывает ошибку, потому что запрос возвращает несколько строк:
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 для хранения результата запроса результата в одной или нескольких переменных.