You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL INSERT语句插入子查询结果+固定教师数据?

向PROFESORES表批量插入数据的解决方案

问题背景

需要向PROFESORES表插入两行数据,要求:

  • COD_CENTRO取自PERSONAL表中仅配备1名行政人员(FUNCION = 'ADMINISTRATIVO')的学校,该子查询返回2个不同的学校代码
  • 教师信息固定:DNI=8790055、APELLIDOS='Clara Salas'、ESPECIALIDAD='IDIOMAS'

原使用INSERT INTO...VALUES的语句触发ORA-01427: single-row subquery returns more than one row错误,因为该方式仅支持插入单行,而子查询返回多行。

单条SQL实现批量插入

可以使用INSERT ... SELECT语法替代INSERT ... VALUES,将子查询作为数据源,同时将固定教师信息与每个学校代码组合,一次性插入多行:

INSERT INTO PROFESORES (COD_CENTRO, DNI, APELLIDOS, ESPECIALIDAD)
SELECT COD_CENTRO, 8790055, 'Clara Salas', 'IDIOMAS'
FROM PERSONAL
WHERE FUNCION = 'ADMINISTRATIVO'
GROUP BY COD_CENTRO
HAVING COUNT(FUNCION) = 1;

该语句会将子查询返回的2个学校代码分别与固定教师信息拼接,生成两行数据插入表中,完全满足需求。

替代方案:分两次插入

如果需要分两次插入,可以通过限制子查询的行数来获取单个学校代码:

第一次插入第一个学校代码

INSERT INTO PROFESORES (COD_CENTRO, DNI, APELLIDOS, ESPECIALIDAD)
VALUES (
    (SELECT COD_CENTRO
     FROM PERSONAL
     WHERE FUNCION = 'ADMINISTRATIVO'
     GROUP BY COD_CENTRO
     HAVING COUNT(FUNCION) = 1
     FETCH FIRST 1 ROW ONLY),
    8790055, 'Clara Salas', 'IDIOMAS'
);

第二次插入第二个学校代码(排除已插入的)

INSERT INTO PROFESORES (COD_CENTRO, DNI, APELLIDOS, ESPECIALIDAD)
VALUES (
    (SELECT COD_CENTRO
     FROM PERSONAL
     WHERE FUNCION = 'ADMINISTRATIVO'
     GROUP BY COD_CENTRO
     HAVING COUNT(FUNCION) = 1
     AND COD_CENTRO NOT IN (SELECT COD_CENTRO FROM PROFESORES WHERE DNI = 8790055)
     FETCH FIRST 1 ROW ONLY),
    8790055, 'Clara Salas', 'IDIOMAS'
);

也可以通过ROWNUM来指定获取第N个学校代码,比如:

-- 获取第1个学校代码
SELECT COD_CENTRO
FROM (
    SELECT COD_CENTRO
    FROM PERSONAL
    WHERE FUNCION = 'ADMINISTRATIVO'
    GROUP BY COD_CENTRO
    HAVING COUNT(FUNCION) = 1
)
WHERE ROWNUM = 1;

-- 获取第2个学校代码
SELECT COD_CENTRO
FROM (
    SELECT COD_CENTRO, ROWNUM AS rn
    FROM PERSONAL
    WHERE FUNCION = 'ADMINISTRATIVO'
    GROUP BY COD_CENTRO
    HAVING COUNT(FUNCION) = 1
)
WHERE rn = 2;

说明

此前尝试的“先插入学校代码再补充教师信息”思路不可行,因为DNI是主键,插入时不能为空,必须同时提供主键值和其他字段内容。

内容的提问来源于stack exchange,提问作者Álvaro Terrasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:50:16