Оглавление

12. Переменные SQL

Результат текущего запроса можно сохранить в переменной и использовать в последующих запросах в рамках одного сеанса. Присвоить значение переменной можно следующими способами:
□ c помощью оператора SELECT:
SELECT @time := NOW();
/* Выведет: 2009-09-22 00:02:37 */
SELECT @time;
/* Выведет: 2009-09-22 00:02:37 */
□ c помощью оператора SET:
SET @time = NOW();
SELECT @time;
/* Выведет: 2009-09-22 00:03:18 */

 
Объявление переменной начинается с символа @, а сохранить значение в переменной позволяет оператор :=. Обратите внимание, что в случае применения оператора SET вместо оператора := можно использовать оператор =. Следует также помнить, что имя переменной зависит от регистра символов.

 

В качестве примера создадим таблицу var_table в базе данных tests.
CREATE TABLE `var_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`name_tovar` VARCHAR(255),
`count` INT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

 

Поле name_tovar предназначено для хранения названия товара, а поле count служит для обозначения количества товара на складе.

 

Добавим несколько записей:
INSERT INTO `var_table` VALUES (NULL, 'Монитор', 10);
INSERT INTO `var_table` VALUES (NULL, 'Клавиатура', 20);
INSERT INTO `var_table` VALUES (NULL, 'Мышь', 30);
INSERT INTO `var_table` VALUES (NULL, 'Тюнер', 40);
INSERT INTO `var_table` VALUES (NULL, 'HDD', 20);

 
Сохраним в переменной минимальное количество товара на складе, а затем выведем название товара с минимальным количеством:
SELECT @min := MIN(`count`) FROM `var_table`;
/* Выведет: 10 */
SELECT `name_tovar` FROM `var_table` WHERE `count` = @min;
/* Выведет: Монитор */

 
Если запрос вернет более одного варианта, то в переменной сохранится только последнее значение:
SELECT @min := `count` FROM `var_table`;
/* Выведет:
10
20
30
40
20 */
SELECT @min;
/* Выведет: 20 */
6.13.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити