
テーブルがふたつあります。
片方のテーブルA(hoge1)のnameに、もう片方のB(hoge2)のnameをいれたいのです。
テーブルAとBはidでリレーションを張って、それぞれ対応する列にいれたいと思ってます。
tabale A hoge1
id | name | foo
----+-----+----
1 | 1111 | xxxx
2 | 2222 | yyy
3 | 3333 | zzzz
tabale B hoge2
id | name | bar
----+-----+---
1 | 1.net | 1
2 | 2.net | 0
3 | 3.net | 1
期待する結果
tabale A hoge1
id | name | foo
----+-----+----
1 | 1.net | xxxx
2 | 2.net | yyy
3 | 3.net | zzzz
Bに変更はなし
update hoge1 set name = b.name
from hoge2 b , hoge1 a
where a.id = b.id ;
とやるとname列が全て 1.netになってしまい
UPDATE hoge1 SET name = (select b.name from hoge2 b , hoge1 a where b.id = a.id ) ;
ERROR: More than one tuple returned by a subselect used as an expression.
とするとエラーです。(oracleならうまくいくとnetで調べたのですが。。)
どなたかご教授いただけますか。
No.2ベストアンサー
- 回答日時:
すいません、補足です。
UPDATE hoge1 SET name = (select b.name from hoge2 b , hoge1 a where b.id = a.id ) ;
の何が悪いか、という点ですが、
副問い合わせの中で「hoge1 (AS) a 」としてるのに、最初にupdate hoge1 としてるのが
アウトとなるようです。ただこの場合、AS句のスコープも関係してきますので、
こういう場合は素直にテーブル名を書いたほうがよいです。
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQ …
辺りがヒントです。
ありがとうございます。
たしかに、テーブル名を直で書くと動作しますね。
なるほど。ASのスコープが原因なのですね。。。。
結局今回はPGでやっちゃったのですが次回から使おうと思います。
ありがとうございました。
No.1
- 回答日時:
hoge1 を test1
hoge2 を test2
hoge1.name を name1
hoge2.name を name2
に置き換えて読んでください。
update test1 set name1 = (select name2 from test2 where test1.id = test2.id)
where id = (select id from test2 where test1.id = test2.id)
これでうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10がインストールできま...
-
エクセルで縦のカラムデータを...
-
Ophcrackについて
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
-
Pythonで2つのデータ(キー無し...
-
数値が定期的にあらわれる文字...
-
終端クォート ' が必要です と...
-
PostgressからMySQL(MariaDB)...
-
【PostgreSQL】行の値の並びを...
-
列が存在しないと言われる
-
PostgreSQL14.6のSSL対応について
-
ポストグレにあるExcelファイル...
-
PostgreSQL レコードからアイテ...
-
文字切り替えの時に 中央にでる A
-
postgreSQL カラムの全ての値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgreSQLのint型は桁数指定が...
-
テーブルからのselectにおいて...
-
PostgressからMySQL(MariaDB)...
-
ビット演算結果の取得
-
UNIQUEをつけたときのINDEXテー...
-
plpgsqlのエスケープ文字について
-
PostgresSQL8.4でツリー上に取...
-
SQL SELECT文 別テーブルのレコ...
-
クエリアナライザのsp_helpコマ...
-
pg_queryで変数の取り扱い方
-
テーブル作成 外部参照 配列
-
indexを使おうとしない間違った...
-
ベスト3の抽出方法
-
賢いSQL文がわからない
-
チェックボックスから、データ...
-
phpPgAdminからSQL文を発行し、...
-
SQLで検索結果の記事を表示したい
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
ORA-00959: 表領域'****'は...
おすすめ情報