1. ホーム
  2. マイスル

[解決済み】MySQL。クエリの結果からユーザー変数を設定する

2022-04-06 14:48:06

質問

MySQLでクエリの結果に基づいてユーザー変数を設定することは可能ですか?

私が実現したいのは、次のようなものです。 USERGROUP は一意である)。

set @user = 123456;
set @group = select GROUP from USER where User = @user;
select * from USER where GROUP = @group;

なお、可能なのは分かっていますが、ネストされたクエリでこれを実行することは望んでいません。

どのように解決するのですか?

はい、しかし、あなたは変数の割り当てをクエリに移動する必要があります。

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

テストケースです。

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

結果

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)

ただし SET のどちらかです。 = または := は、代入演算子として使用することができます。しかし、他の文の中では、代入演算子は必ず := であって = なぜなら = は、SET文以外では比較演算子として扱われます。


UPDATEです。

また、下記のコメントも参考にしてください。

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