こんにちわ。
ポスグレでSQLをかいております。
・実現したいこと
テーブルUser_groupでSELECTした結果を
テーブルUsersのアップデート文の条件にしたい
です。
以下がUser_groupでのSELECT文です。
SQL
1SELECT user_id, count(group_key) FROM User_group 2WHERE user_id 3IN 4( 5SELECT user_id FROM User_group WHERE group_key = 'AAAAAA' 6) 7GROUP BY user_id 8having count(group_key) = 2 9; 10
テーブルの構成--User_group
user_id | group_key | 列 |
---|---|---|
0001 | AAAAAA | |
0002 | BBBBBB | |
0003 | CCCCCC | |
0004 | AAAAAA |
上のSQLを実行するとgroup_keyがAAAAAAかつ、2レコードあるデータが抽出されます。
そしてこの結果からuser_idをキーにして別のテーブルのUPDATE文の条件にしたいです。
SQL
1UPDATE Users 2SET enable_flg= 1 3WHERE user_id 4IN 5( 6 SELECT user_id, count(group_key) 7 FROM User_group 8 WHERE 9 user_id 10 IN 11 ( 12 SELECT user_id FROM User_group WHERE group_key = 'AAAAAA' 13 ) 14 GROUP BY user_id 15 having count(group_key) = 2 16) 17;
これだとエラーになります。
恐らく一番最初に記載しているSQLの実行結果はuser_idとCOUNTの結果がSELECTされているため
UPDATAEのINで=ができないためエラーになると思われますが、どう修正したらいいかわかりません。
アドバイスお願いいたします。
よろしくお願いいたします。
エラーメッセージ
ERROR: subquery has too many columns
回答1件
あなたの回答
tips
プレビュー