【发布时间】:2016-10-20 03:14:46
【问题描述】:
尝试通过脚本创建一些测试数据,使用 TableB 中尚不存在的 ID 填充 TableA.colVal。
最终结果是看到所有 TableA.colVal 最终都填充到 TableB.ID_PK 中:
INSERT INTO tableA (colVal , aPK2, aPK3) VALUES
(
(SELECT colVal , aPK2, aPK3
FROM tableA
WHERE colVal NOT IN
(
SELECT bID_PK
FROM (SELECT bID_PK, rownum r
FROM (SELECT bID_PK
FROM TableB order by bID_PK DESC)
)
where r = 1 --
)
and rownum = 1)
);
如果
TableA 有 colVals 1,2,5,6,7,8
和
TableB 有 bID_PKs 1,5,7
具体来说,我想确定“失踪” 3 TableB.bID_PK 值:2、6 和 8
我尝试增加 r = 1,希望获得下一个要填充的值,但我总是得到 TableB 中找不到的第一个 TableA.colVal(所以我所有的 TableA.colVal 都获得相同的值)。更改外部选择的 rownum 也不起作用。
帮助?
澄清 我需要用 TableA.colVal 中尚不存在的 TableB.bID_PK 值填充 TableA.colVal ,其中 TableA 有一个 3 字段复合主键。我可以手动更改剩余 PK 字段的值,但我需要使用 TableB.bID_PK(这是 TableB 的主键)中的值填充剩余字段。
【问题讨论】:
-
如果您希望
insert的来源是select语句,则values子句是错误的:INSERT INTO tableA (colVal , aPK2, aPK3) select ...
标签: sql oracle select insert rownum