Описание : в этой статье вы узнаете, как использовать пользовательские переменные MySQL в инструкциях SQL.
Иногда вы хотите передать значение из оператора SQL в другой оператор SQL. Для этого вы сохраняете значение в пользовательской переменной MySQL в первом операторе и ссылаетесь на него в последующих инструкциях.
Для создания пользовательской переменной вы используете формат @variable_name, в котором она variable_name состоит из буквенно-цифровых символов. Максимальная длина пользовательской переменной составляет 64 символа с MySQL 5.7.5
Пользовательские переменные не чувствительны к регистру. Это означает, что @id и @ID то же самое.
Вы можете назначить пользовательскую переменную определенным типам данных, таким как целое число, число с плавающей запятой, десятичное число, строка или NULL.
Пользовательская переменная, определенная одним клиентом, не видна другим клиентам. Другими словами, пользовательская переменная является специфичной для сессии.
Обратите внимание, что пользовательские переменные являются специфичным для MySQL расширением стандарта SQL. Они могут быть недоступны в других системах баз данных.
Есть два способа присвоить значение пользовательской переменной.
Первый способ заключается в следующем:
SET @variable_name := value;
Вы можете использовать либо : =, либо = как оператор присваивания в операторе SET. Например, оператор присваивает число 100 переменной @counter.
SET @counter := 100;
Второй способ присвоения значения переменной — использование оператора SELECT. В этом случае вы должны использовать оператор присваивания : =, потому что в операторе SELECT в MySQL рассматривает оператор = как оператор равенства.
SELECT @variable_name := value;
После назначения вы можете использовать переменную в последующем операторе, где выражение разрешено, например, в предложении WHERE, операторе INSERT или UPDATE.
Следующий оператор получает самый дорогой продукт в таблице products и назначает цену пользовательской переменной @msrp:
SELECT @msrp:=MAX(msrp) FROM products;
Следующий оператор использует переменную @msrp для запроса информации о самом дорогом продукте.
SELECT productCode, productName, productLine, msrp FROM products WHERE msrp = @msrp;
Иногда вы хотите вставить строку в таблицу, получить последний идентификатор вставки и использовать его для вставки данных в другую таблицу. В этом случае вы можете использовать пользовательскую переменную для хранения самого последнего идентификатора, сгенерированного столбцом AUTO_INCREMENT, следующим образом.
SELECT @id:=LAST_INSERT_ID();
Пользовательская переменная может содержать только одно значение. Если оператор SELECT возвращает несколько значений, переменная будет принимать значение последней строки в результате.
SELECT @buyPrice:=buyprice FROM products WHERE buyprice > 95 ORDER BY buyprice;
SELECT @buyprice;
В этой статье мы показали, как использовать переменные MySQL в операторах SQL для передачи данных между операторами в сеансе.