Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Setze die Benutzervariable aus dem Ergebnis der Abfrage

Ja, aber Sie müssen die Variablenzuweisung in die Abfrage verschieben:

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

Testfall:

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

Ergebnis:

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)

Beachten Sie das für SET , entweder = oder := kann als Zuweisungsoperator verwendet werden. In anderen Anweisungen muss der Zuweisungsoperator jedoch := sein und nicht = weil = wird in Nicht-SET-Anweisungen als Vergleichsoperator behandelt.

AKTUALISIERUNG:

Zusätzlich zu den Kommentaren unten können Sie auch Folgendes tun:

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