Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Defina a variável do usuário do resultado da consulta


Sim, mas você precisa mover a atribuição de variável para a consulta:
SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;

Caso de teste:
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)

Observe que para SET , ou = ou := pode ser usado como o operador de atribuição. No entanto, dentro de outras instruções, o operador de atribuição deve ser := e não = porque = é tratado como um operador de comparação em instruções não SET.

ATUALIZAÇÃO:

Além dos comentários abaixo, você também pode fazer o seguinte:
SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group; 
SELECT * FROM user WHERE `group` = @group;