合并返回温度

问题描述 投票:0回答:1

这样的事情是否可以不必使用WITH? 可以使用 CREATE TEMP TABLE temp AS 来代替手动创建临时表吗?

CREATE TEMP TABLE temp
(
    action    text,
    winery_id int,
    brand     text
);

MERGE INTO wines w
USING wines_updates u
ON u.winery_id = w.winery_id
WHEN MATCHED THEN
    UPDATE
    SET stock = u.stock
RETURNING merge_action() action, w.winery_id, w.brand INTO temp;
sql postgresql
1个回答
0
投票

不。

MERGE
不能在子查询中使用,并且它不能作为
create table as
的直接源。您确实必须涉及 CTE:

CREATE TEMP TABLE tmp AS
WITH cte AS(
MERGE INTO wines w
USING wines_updates u
ON u.winery_id = w.winery_id
WHEN MATCHED THEN
    UPDATE
    SET stock = u.stock
RETURNING merge_action() action, w.winery_id, w.brand)
SELECT*FROM cte;
© www.soinside.com 2019 - 2024. All rights reserved.