sql >> Databáze >  >> RDS >> Mysql

MySQL:Nastavte uživatelskou proměnnou z výsledku dotazu

Ano, ale musíte přesunout přiřazení proměnné do dotazu:

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

Testovací případ:

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

Výsledek:

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)

Všimněte si, že pro SET , buď = nebo := lze použít jako operátor přiřazení. V ostatních příkazech však musí být operátor přiřazení := a ne = protože = je považováno za operátor porovnání v příkazech jiných než SET.

AKTUALIZACE:

Kromě komentářů níže můžete také provést následující:

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


  1. 4 způsoby, jak zkontrolovat, zda tabulka existuje před jejím umístěním na SQL Server (T-SQL)

  2. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver (maven + jboss)

  3. MYSQLI - WHERE IN pole

  4. Jak spustit skript .sql z bash