sql >> Base de Datos >  >> RDS >> Mysql

MySQL:establecer la variable de usuario del resultado de la consulta

Sí, pero debe mover la asignación de variables a la consulta:

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

Caso de prueba:

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

Resultado:

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)

Tenga en cuenta que para SET , ya sea = o := se puede utilizar como operador de asignación. Sin embargo, dentro de otras declaraciones, el operador de asignación debe ser := y no = porque = se trata como un operador de comparación en declaraciones que no son SET.

ACTUALIZACIÓN:

Además de los comentarios a continuación, también puede hacer lo siguiente:

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