Приднестровская поддержка XOOPS
Результат текущего запроса можно сохранить в переменной и использовать в последующих запросах в рамках одного сеанса. Присвоить значение переменной можно следующими способами:
□ 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.
Отправитель | Нити |
---|
5 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 5 далее... |