我有两张已经存档的表格。对于数据很少的单个日期,它们具有相同的行。我需要将表2记录插入到表1中。当我这样做的时候,我会得到唯一约束忽略的错误。如何实现它。是否有任何提示要忽略已存在的数据,只插入新记录。
发布于 2020-01-30 18:49:25
你可以使用这个::
INSERT INTO destTable
SELECT Field1,Field2,Field3,...
FROM srcTable
WHERE NOT EXISTS(SELECT *
FROM destTable
WHERE (srcTable.Field1=destTable.Field1 and
SrcTable.Field2=DestTable.Field2...etc.)
)发布于 2020-01-30 19:08:52
您可以使用SET运算符MINUS来实现如下结果:
INSERT INTO TABLE1 (<COLUMN NAMES>)
SELECT <COLUMN NAMES> FROM TABLE2
MINUS
SELECT <COLUMN NAMES> FROM TABLE1根据oracle documentation is对MINUS操作符的描述
对第一个查询选择的所有不同行执行
操作,而不是第二个查询
干杯!!
发布于 2020-01-30 20:07:38
另一种可能的解决方案是使用MERGE,在下面的link上,你可以找到一个有用的教程,详细解释它。
MERGE INTO table1 a
USING table2 b ON (a.col1 = b.col1) -- define your own search condition
WHEN NOT MATCHED THEN
INSERT (a.col1, a.col2, a.col3 ...)
VALUES (b.col1, b.col2, b.col3 ...);https://stackoverflow.com/questions/59983808
复制相似问题