我要将机器生成的文本文件中的一些数据插入到oracle数据库中的单个表中。但是这些值可以存在于同一数据库中的多个表中,这些数据库之前通过不同的源更新。所以我想要检查值是否存在并匹配其他表。为了做到这一点,我在新单表中创建了一个名为“Ismatching
”的列。但我不知道如何检查该值是否存在我没有。我正在使用ADO.NET将数据推送到oracle数据库。以下是我用于从多个表MN_SITE
,MN_CELL
和MN_PSITE获取数据的查询以及我将要访问的新表插入表是Mn_tabletest
,我在其中创建了一个新列“Ismatching
”。以下是我用于从多个表中获取数据的查询以及我要插入到表中的相同列值{{ 1}}。但我不知道在插入时如何更新表Mn_tabletest
中的新列“Ismatching
”,有人可以在这里指导我
Mn_tabletest
更新
我没有插入和更新两者。我正在向表中插入行,但是“Ismatching”列中的一个是基于当前插入行存在于其他多个表中
答案 0 :(得分:1)
正如oldProgrammer所建议的那样,您可以使用MERGE语句将数据插入到实际表中,而不是先将数据插入到" Ismatching"列。
SYNTAX for Merge:
MERGE INTO actual_table A
USING (SELECT B_columns FROM reference_table B)
ON (A.column1 = B.column1)
WHEN MATCHED THEN UPDATE SET B.column2=....
WHEN NOT MATCHED THEN INSERT (A.column1, A.column2,....)
VALUES (A.column1, A.column2,....);
此处您的column1将是一个主列,用于检查数据是否存在。
有关合并的详细信息,请查看:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606