Oui, mais vous devez déplacer l'affectation de variable dans la requête:
SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;
Cas de Test:
CREATE TABLE user (`user` int, `group` int);
INSERT INTO user VALUES (123456, 5);
INSERT INTO user VALUES (111111, 5);
Résultat:
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)
Notez que pour l' SET
, =
ou :=
peut être utilisé comme l'opérateur d'affectation. Cependant à l'intérieur d'autres états, l'opérateur d'affectation doit être :=
et pas =
car =
est considéré comme un opérateur de comparaison dans d'autres états.
Mise à JOUR:
À la suite de commentaires ci-dessous, vous pouvez également effectuer les opérations suivantes:
SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group;
SELECT * FROM user WHERE `group` = @group;