我在尝试插入“中间表”时遇到了n-n关系的问题。
目标是关联Commune
和ZipCode
(在法国,公社是一个城市,城市名称可以有多个ZipCode,因为有同名的公社。但不是同一个地方)
ZipCode可以处理多个城市,这是我的n-n relationShip。
所以这是我使用的请求:
INSERT INTO FR(IDCODEPOSTAL, IDCOM_SIM)
VALUES
('24209 CEDEX', (SELECT DISTINCT IDCOM_SIM FROM COMMUNE WHERE NCCENR='Creysse'));
但这里SELECT返回2行。我读了很多,但我没有办法解决这个问题。
答案 0 :(得分:0)
我不确定您要实现的目标,但通常您会使用INSERT ... SELECT
(不使用VALUES
)使用单个语句插入多行:
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')
);