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

MySQL:Indstil brugervariabel fra resultatet af forespørgsel

Ja, men du skal flytte variabeltildelingen ind i forespørgslen:

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

Testtilfælde:

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

Resultat:

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)

Bemærk, at for SET , enten = eller := kan bruges som opgaveoperatør. Men inde i andre udsagn skal tildelingsoperatoren være := og ikke = fordi = behandles som en sammenligningsoperator i ikke-SET-udsagn.

OPDATERING:

Ud over kommentarerne nedenfor kan du også gøre følgende:

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


  1. Måde at afbryde eksekvering af MySQL-scripts (hæve fejl måske)?

  2. Hvornår skal man bruge UNDTAGET i modsætning til IKKE FINDER i Transact SQL?

  3. Hvordan bruger jeg Expression Builder i Access 2016?

  4. hvordan kan jeg opdatere top 100 poster i sql server