Postgres upsert 使用 select 的结果

Postgres upsert using results from select

我正在尝试使用 select 中的值向 postgres 更新插入。看起来像:

INSERT INTO foo (a, b, c)
SELECT a_, b_, c_
-- hairy sql
ON CONFLICT (...condition...) DO UPDATE
SET "c"=???

关于冲突,我想使用我的 select 语句中的值之一,但我找不到正确的语法来为其设置别名。我如何使用 Postgres 做到这一点?

使用excluded关键字:

INSERT INTO foo (a, b, c)
SELECT a_, b_, c_
-- hairy sql
ON CONFLICT (...condition...) DO UPDATE
  SET c = excluded.c;