当尝试在 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'), ...);
我试图从 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'), ...);