Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :définir la variable utilisateur à partir du résultat de la requête

Oui, mais vous devez déplacer l'affectation de la variable dans la requête :

SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;

Scénario 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 SET , soit = ou := peut être utilisé comme opérateur d'affectation. Cependant, dans d'autres instructions, l'opérateur d'affectation doit être := et non = car = est traité comme un opérateur de comparaison dans les instructions non SET.

MISE À JOUR :

Suite aux commentaires ci-dessous, vous pouvez également effectuer les actions suivantes :

SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group; 
SELECT * FROM user WHERE `group` = @group;