Postgres 从具有多个值的 select 语句插入

Postgres insert from select statement with multiple values

我检查过this question,但所有答案似乎都提供了针对只有一个字段的解决方案。我需要在插入时另外设置一个字段。我试过类似的东西:

INSERT INTO foo (x, y)
select id
FROM boo b1, 3

我明白了

SQL Error [42601]: ERROR: syntax error at or near "3"

如何将 select 和另一个值用于 INSERT INTO foo?

你可能想要

INSERT INTO foo (x, y)
SELECT b1.id, 3
FROM boo b1;

文字值必须进入 SELECT 子句,它不是 FROM 子句中的另一个 table。还可以工作的是

INSERT INTO foo (x, y)
VALUES
  ( (SELECT b1.id FROM boo b1 WHERE …), 3 );

INSERT INTO foo (x, y)
SELECT (SELECT b1.id FROM boo b1 WHERE …), 3;

但这些仅在内部 SELECT(子查询)returns 使用适当的 WHERE 条件正好是一个值时才有效。