当尝试在 table 中插入多行时,用作表达式的子查询返回多行时出现错误

getting an error as more than one row returned by a subquery used as an expression when trying to insert more than one rows in table

我试图从 postgresql 中的不同 table 向 table 中插入多个值,但遇到错误 [21000]:错误:用作查询的子查询返回多于一行表达式

INSERT INTO coupon (id,entityid)
values
(select nextval('seq_coupon')),(select entityid from card where country in ('China')));

此查询 [select entityid from card where country in ('China'))] 有多行。

非常感谢任何帮助。

如果要插入来自 SELECT 查询的行,请不要使用 values 子句。您用于第二列值的 SELECT 查询 returns 超过一行,这在需要单个值的地方是不允许的。

要为所有新插入的行包含一个常量值,只需将其添加到源查询的 SELECT 列表中。

INSERT INTO coupon (id, entityid, coupon_code)
select nextval('seq_coupon'), entityid, 'A-51'
from card
where country in ('China');

附带说明:当使用 nextval() 时,即使在 values 子句中,也无需使用 SELECT 作为前缀,例如

insert into coupon (id, entityid) 
values (nextval('some_seq'), ...);