CTEの行を挿入(または競合時に更新)しようとしましたが、正しい構文を見つけるのに苦労しています。 (明瞭にするために簡素化された)私はこのようなルックスに挿入していますテーブルはpostgresql 9.5でWITH問合せのINSERT ON CONFLICT UPDATEが可能ですか?
Column | Type | Modifiers
----------------------+--------------------------+------------------------------------------------------------------
id | integer | not null default nextval('"QuestionStatistic_id_seq"'::regclass)
questionId | integer |
count | integer | not null default 0
Indexes:
"QuestionStatistic_pkey" PRIMARY KEY, btree (id)
"QuestionStatistic_questionId_key" UNIQUE CONSTRAINT, btree ("questionId")
は、これが私のクエリです:SET "count" = "Statistics"."count"
部分で私ERROR: missing FROM-clause entry for table "Statistics"
を与える
with "Statistic" as (
select "questionId", "count" from "SomeTable"
)
INSERT INTO "QuestionStatistic" ("questionId", "count") SELECT "questionId", "count" FROM "Statistics"
ON CONFLICT ("questionId") DO UPDATE SET "count" = "Statistics"."count"
。 FROMをupdate節に追加しようとしましたが、ERROR: syntax error at or near "FROM"
があります。 INSERT ON CONFLICT UPDATEをCTEと連携させる方法はありますか? ON CONFLICT DO UPDATE
は、多分あなたは '使うべきexcluded.count' ..あなたは、反復サンドボックスを共有してくださいだろう.. –
@VaoTsunのおかげで、使用して "除外" テーブル名だけで動作して?細かい – fourslashw