如何在 PostgreSQL 中插入多行
How to upsert multiple rows in PostgreSQL
我正在尝试在 PostgreSQL 9.5.2 中编写这样的查询:
INSERT INTO a (id, x)
SELECT id, x FROM b
ON CONFLICT (id) DO UPDATE
SET x = b.x
WHERE b.y < 100
但我得到 ERROR: missing FROM-clause entry for table "b"
。我一定是遗漏了一些基本的东西,但是我如何引用插入到 UPDATE 子句中的行呢?或者有其他方法吗?
冲突的值可通过 excluded
别名获得:
INSERT INTO a (id, x)
SELECT id, x
FROM b
ON CONFLICT (id) DO UPDATE
SET x = excluded.x;
我正在尝试在 PostgreSQL 9.5.2 中编写这样的查询:
INSERT INTO a (id, x)
SELECT id, x FROM b
ON CONFLICT (id) DO UPDATE
SET x = b.x
WHERE b.y < 100
但我得到 ERROR: missing FROM-clause entry for table "b"
。我一定是遗漏了一些基本的东西,但是我如何引用插入到 UPDATE 子句中的行呢?或者有其他方法吗?
冲突的值可通过 excluded
别名获得:
INSERT INTO a (id, x)
SELECT id, x
FROM b
ON CONFLICT (id) DO UPDATE
SET x = excluded.x;