Oracle SQL-子查询返回多行的插入

Oracle SQL-子查询返回多行的插入,sql,oracle,Sql,Oracle,我在尝试插入“中间表”时遇到了一个n-n关系问题 目标是关联公社和ZipCode(在法国,公社是一个城市,城市名称可以有多个ZipCode,因为有同名的公社。但不在同一个地方) 一个ZipCode可以处理多个城市,这是我的n-n关系 下面是我使用的请求: INSERT INTO FR(IDCODEPOSTAL, IDCOM_SIM) VALUES ('24209 CEDEX', (SELECT DISTINCT IDCOM_SIM FROM COMMUNE WHERE NCCENR='Cre

我在尝试插入“中间表”时遇到了一个n-n关系问题

目标是关联
公社
ZipCode
(在法国,公社是一个城市,城市名称可以有多个ZipCode,因为有同名的公社。但不在同一个地方)

一个ZipCode可以处理多个城市,这是我的n-n关系

下面是我使用的请求:

INSERT INTO FR(IDCODEPOSTAL, IDCOM_SIM) 
VALUES 
('24209 CEDEX', (SELECT DISTINCT IDCOM_SIM FROM COMMUNE WHERE NCCENR='Creysse'));

但是这里SELECT返回2行。我读了很多书,但没有找到解决方法。

我不确定您想要实现什么,但通常您会使用
插入。。。选择
(不带
)以使用一条语句插入多行:

INSERT INTO FR
  (IDCODEPOSTAL, IDCOM_SIM) 
VALUES 
 SELECT '24209 CEDEX', IDCOM_SIM 
 FROM COMMUNE 
 WHERE NCCENR='Creysse';
但是,如果只想插入一行,则需要确保子选择仅返回一行。通常使用聚合函数(如
max()

INSERT INTO FR
  (
    IDCODEPOSTAL, 
    IDCOM_SIM
  ) 
VALUES 
  (
    '24209 CEDEX', 
    (SELECT max(IDCOM_SIM) FROM COMMUNE WHERE NCCENR='Creysse')
  );