sql >> Database >  >> RDS >> Mysql

MySQL:gebruikersvariabele instellen op basis van resultaat van zoekopdracht

Ja, maar u moet de variabeletoewijzing naar de query verplaatsen:

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

Testgeval:

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

Resultaat:

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)

Merk op dat voor SET , ofwel = of := kan worden gebruikt als de toewijzingsoperator. Binnen andere instructies moet de toewijzingsoperator echter := . zijn en niet = omdat = wordt behandeld als een vergelijkingsoperator in niet-SET-instructies.

UPDATE:

Naast onderstaande opmerkingen kunt u ook het volgende doen:

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


  1. MySQL - Hoe te verwijderen uit een tabel wanneer geneste select die tabel gebruikt?

  2. SQL WHERE.. IN-clausule meerdere kolommen

  3. Haal de ID van een ingevoegd record op:Php &MS SQL SERVER

  4. Hoe schakel ik het MySQL-log met trage query's in?