Oracle SQL-子查询返回多行的插入
我在尝试插入“中间表”时遇到了一个n-n关系问题 目标是关联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
公社
和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')
);