postgresql - 尝试在表中插入多行时,由于用作表达式的子查询返回多行而出现错误
问题描述
我正在尝试将多个值从 postgresql 中的不同表插入到表中,并遇到 [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 查询返回多行,这在需要单个值的地方是不允许的。
要为所有新插入的行包含一个常量值,只需将其添加到源查询的 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'), ...);
推荐阅读
- python - 合并两个 DataFrame 但更新原始列
- python - 如何重新导入字典对象而不在当前会话中进行修改?
- html - 不使用表单标签时,angularjs如何检测$dirty?
- mapbox - Maxbox GL JS Popup 打开事件未按预期工作
- python-3.x - Python中的大写字母和标点符号
- javascript - 将特定按钮与特定模式链接
- vb.net - 如何让我的系统自动关闭并重新打开?
- php - 如何处理codeigniter中的sub_query?
- javascript - 从 URL 获取令牌
- ssl - Amazon S3 数据完整性 MD5 与 SSL/TLS