sql - sql 查询中的 ORA-00913
问题描述
我正在使用 Oracle SQL,我正在尝试运行以下查询:
INSERT
INTO data_mapp_info
(
data_mapp_info_id,
data_mapp_camp_id,
data_mapp_info,
data_mapp_info_regs,
dt_first,
dt_ult_modf,
user_ult_modf
)
VALUES
(
(SELECT MAX(data_mapp_info_id)+1 AS data_mapp_info_id
FROM MAPP.DATA_MAPP_INFO
)
,
77,
'Value 1',
(SELECT MAX(data_mapp_info_regs),
CASE data_mapp_info_regs
WHEN NULL
THEN 1
ELSE MAX(data_mapp_info_regs)+1
END
FROM MAPP_SOA.DATA_MAPP_info
WHERE data_mapp_camp_id = 77
),
sysdate,
sysdate,
'user.name'
) ;
对于data_mapp_info_regs的值,如果它为NULL ,我尝试将其设置为1 ,如果设置的索引data_mapp_camp_id已经存在,则获取前一个最大值加一。但我收到错误ORA-00913: "too many values"。
如何修复此查询?
解决方案
在我看来,第二个子查询应该修改为:
INSERT INTO data_mapp_info (data_mapp_info_id,
data_mapp_camp_id,
data_mapp_info,
data_mapp_info_regs,
dt_first,
dt_ult_modf,
user_ult_modf)
VALUES (
(SELECT MAX (data_mapp_info_id) + 1 AS data_mapp_info_id
FROM MAPP.DATA_MAPP_INFO),
77,
'Value 1',
-- This subquery should be modified
(SELECT NVL (MAX (data_mapp_info_regs), 0) + 1
FROM MAPP_SOA.DATA_MAPP_info
WHERE data_mapp_camp_id = 77),
--
SYSDATE,
SYSDATE,
'user.name');
推荐阅读
- javascript - $(...).sideNav 不是函数
- c++ - 完美地将 STL 容器转发到模板类
- python - Python 中的类、继承和方法/函数
- visual-studio - Angular 代码 VS 中的类型“{}”上不存在 ts 属性推送
- flutter - 在颤动中带有渐变边框的轮廓透明按钮
- java - 即使字符串的内容相同,.equals 方法也会返回 false
- django - 如何在 django 中序列化 select_related 查询的结果
- c# - 如何使用 DbContext 进行原始 sql 查询(每个请求一个连接)?
- javascript - 如何在 Laravel 中保存修改后的图像
- javascript - 我无法在输入中显示文件的名称