MySQL: установка пользовательской переменной из результата запроса.
Возможно ли установить пользовательскую переменную на основе результата запроса в MySQL?
Я хочу добиться чего-то подобного (мы можем предположить, что оба USER
и GROUP
уникальны):
set @user = 123456;
set @group = select GROUP from USER where User = @user;
select * from USER where GROUP = @group;
Обратите внимание, что я знаю, что это возможно, но я не хочу делать это с помощью вложенных запросов.
Ответы
Ответ 1
Да, но вам нужно переместить назначение переменной в запрос:
SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;
Тестовый пример:
CREATE TABLE user (`user` int, `group` int);
INSERT INTO user VALUES (123456, 5);
INSERT INTO user VALUES (111111, 5);
Результат:
SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;
+--------+-------+
| user | group |
+--------+-------+
| 123456 | 5 |
| 111111 | 5 |
+--------+-------+
2 rows in set (0.00 sec)
Обратите внимание, что для SET
в качестве оператора присваивания можно использовать либо =
, либо :=
. Однако внутри других операторов оператор присваивания должен быть :=
, а не =
, потому что =
рассматривается как оператор сравнения в операторах без SET.
UPDATE:
В дополнение к комментариям ниже вы также можете сделать следующее:
SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group;
SELECT * FROM user WHERE `group` = @group;
Ответ 2
Просто добавьте круглые скобки вокруг запроса:
set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;
Ответ 3
Сначала давайте посмотрим, как мы можем определить переменную в mysql
Определить переменную в mysql
он должен начинаться с '@', как @{variable_name} и этого '{variable_name}', мы можем заменить его на наше имя переменной.
Теперь, как назначить значение в переменной в mysql. Для этого у нас есть много способов сделать это
- Использование ключевого слова 'SET'.
Пример: -
mysql > SET @a = 1;
- Без использования ключевого слова 'SET' и используя ': ='.
Пример: -
mysql > @a: = 1;
- Используя оператор SELECT.
Пример: -
mysql > выберите 1 в @a;
Здесь @a - пользовательская переменная, а 1 - в @a.
Теперь, как получить или выбрать значение @{variable_name}.
мы можем использовать оператор select, например
Пример: -
mysql > выберите @a;
он отобразит вывод и отобразит значение @a.
Теперь, как назначить значение из таблицы в переменной.
Для этого мы можем использовать два оператора: -
-
@a: = (выберите emp_name от сотрудника, где emp_id = 1);
-
выберите emp_name в @a от сотрудника, где emp_id = 1;
Всегда будьте осторожны, emp_name должно возвращать одно значение, иначе оно выдаст вам ошибку в операторах этого типа.
см. это: -
http://www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql
Ответ 4
Используйте этот способ, чтобы результат не отображался во время выполнения хранимой процедуры.
SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;
Мохаммед Хасан (Рупам)