尝试通过脚本创建一些测试数据,使用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的主键)中的值填充剩余字段。
答案 0 :(得分:1)
您想要的select
看起来像:
select b.id
from b
where not exists (select 1 from a where a.aid = b.bid);
您可以使用insert
插入现有表格,也可以使用适合您数据库的语法创建新表格。
答案 1 :(得分:1)
除了以外可能是一个很好的用例:
INSERT INTO TableA ({Primary Key Columns})
SELECT {Primary Key Columns} FROM TableB
EXCEPT
SELECT {Primary Key Columns} FROM TableA