[英]SQL Server MERGE statement in Postgresql?
merge into Mytable WITH (HOLDLOCK) as dst
using (select @mId as MId,
@up as UP,
@termsAccepted as TermsAccepted,
@AnalyticsAccepted as AnalyticsAccepted,
@EssentialCookiesPolicyWasAccepted as EssentialAccepted,
) as src on dst.MId = src.MId and dst.UP = src.UP
when matched then
update set dst.TermsAccepted = src.TermsAccepted,
dst.AnalyticsAccepted = src.AnalyticsAccepted,
dst.EssentialAccepted = src.EssentialAccepted,
when not matched then
insert(MId, UP )
values(src.MId, src.UP)
試圖將其轉換為 postgres 但似乎無法找到合並的語法替換的原因?
嘗試了一個遞歸查詢,但對要走多深有點迷茫?
WITH f AS (
select mId as MId,
up as UP,
) as src on dst.MId = src.MId and dst.UP = src.UP
)
INSERT INTO myTable (MId, UP)
SELECT src.MId, src.UP
FROM src
WHERE NOT EXISTS (
insert(MId, UP )
values(src.MId, src.UP)
不確定 Microsoft SQL server 語句究竟做了什么,但您可以嘗試以下操作:
INSERT INTO mytable (mid, up) VALUES ($1, $2)
ON CONFLICT (mid, up)
DO UPDATE SET mid = EXCLUDED.mid, up = EXCLUDED.up;
這需要對(mid, up)
的唯一約束。
您問題中UPDATE
分支中的列具有不同的名稱,但這對我來說沒有任何意義。 根據需要更換細節!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.