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;

  1. Без использования ключевого слова 'SET' и используя ': ='.

Пример: - mysql > @a: = 1;

  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;

Мохаммед Хасан (Рупам)