Да, но трябва да преместите присвояването на променлива в заявката:
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.
АКТУАЛИЗИРАНЕ:
В допълнение към коментарите по-долу, можете да направите и следното:
SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group;
SELECT * FROM user WHERE `group` = @group;