3

私は 2 つのテーブルを持っています:凡例temp。temp には ID とアカウント ID があり、legend には advent_id、account_id およびその他の列があります。temp の ID と凡例の advent_id は似ています。account_id 列が空で、関連する account_id を一時から凡例にインポートしたい。私はPostgreSQLを使用しています。

次のクエリを試していますが、期待どおりに機能していません。新しい行が作成され、対応する advent_id ではなく、account_id が新しい行に追加されます。

insert into legend(account_id)
select temp.account_id
from legend, temp
where legend.advent_id=temp.id;

対応する advent_id ではなく、account_id を間違った場所に挿入しています。

次のクエリを使用して確認しています。

select advent_id, account_id from legend where account_id is not null;

私の挿入クエリの問題は正確には何ですか?

4

1 に答える 1

8

行を追加するのではなく、既存の行を変更しようとしている場合は、UPDATEクエリではなくクエリが必要INSERTです。

結合されたテーブルをUPDATE;のターゲットとして使用することができます。あなたの例では:

UPDATE legend
JOIN temp
SET legend.account_id = temp.account_id
WHERE(temp.id = legend.advent_id);
于 2012-06-06T23:20:37.443 に答える