質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

849閲覧

別テーブルの情報をidがあるものだけ追加したい

midsum0323

総合スコア40

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/09/07 06:29

###前提・実現したいこと
テーブルAにテーブルBにある項目(Pとする)をテーブルAのidのあるものだけ追加したいです。
図で表すと
テーブルA
|id|列2|
|1|あ|
|2|い|
|3|う|
|6|か|

テーブルB
|id|P|
|1|a|
|2|b|
|4|c|
|6|d|

作りたいもの
|id|列2|P|
|1|あ|a|
|2|い|b|
|3|う| |
|6|か|d|

カラム自体は
alter table A add P text;
で作成しました。

###発生している問題・エラーメッセージ

ERROR: 副問い合わせで1行を超える行を返すものが式として使用されました
SQLステート:21000

###該当のソースコード
update A set
P = (select B.P
from A left join B
on A.id = B.id);
###試したこと
UPDATE A
LEFT JOIN ON B.id=A.id SET P;

ERROR: "LEFT"またはその近辺で構文エラー
SQLステート:42601

###補足情報(言語/FW/ツール等のバージョンなど)
windows10
PostgreSQL 9.6.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テーブルAに有るものだけテーブルBで更新を行っています。

sql

1create temp table テーブルA (id int,2 text, P text); 2insert into テーブルA (id,2) values 3(1,'あ'),(2,'い'),(3,'う'),(6,'か'); 4-- |id|列2| 5-- |1|あ| 6-- |2|い| 7-- |3|う| 8-- |6|か| 9 10create temp table テーブルB (id int, P text); 11insert into テーブルB values 12(1,'a'),(2,'b'),(4,'c'),(6,'d'); 13-- |id|P| 14-- |1|a| 15-- |2|b| 16-- |4|c| 17-- |6|d| 18 19update テーブルA set P=テーブルB.P 20from テーブルB 21where テーブルA.id=テーブルB.id; 22 23または 24 25update テーブルA set P=t1.P 26from (select テーブルB.id, テーブルB.P from テーブルB join テーブルA using(id)) t1 27where テーブルA.id=t1.id; 28 29 id |2 | p 30----+-----+--- 31 1 || a 32 2 || b 33 3 || 34 6 || d 35(4 rows)

投稿2017/09/07 06:54

編集2017/09/07 07:29
A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A.Ichi

2017/09/07 07:07 編集

変更しました。
sazi

2017/09/07 07:17

formのところは直接テーブルBで良いのでは?
A.Ichi

2017/09/07 07:29

ですよね、適格なご指定ありがとうございます。
midsum0323

2017/09/07 07:47

教えていただいた方法でうまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問