Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:imposta la variabile utente dal risultato della query

Sì, ma devi spostare l'assegnazione della variabile nella query:

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

Caso di prova:

CREATE TABLE user (`user` int, `group` int);
INSERT INTO user VALUES (123456, 5);
INSERT INTO user VALUES (111111, 5);

Risultato:

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)

Nota che per SET , o = o := può essere utilizzato come operatore di assegnazione. Tuttavia, all'interno di altre istruzioni, l'operatore di assegnazione deve essere := e non = perché = viene trattato come un operatore di confronto nelle istruzioni non SET.

AGGIORNAMENTO:

Oltre ai commenti di seguito, puoi anche fare quanto segue:

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