我正在table2
更新名为table1
的表名列Active_status
。但结果包含的问题超过1000.如何解决此问题。我正在使用此查询在ac#application.I听说我们可以使用临时表,如果是这样我怎么用或者有更好的方法。跟我的查询
UPDATE table2
SET Active_status = 'N',
MODIFIED_DATE = SYSDATE
WHERE t2_SLNO IN
(SELECT t2_SLNO
FROM table2
LEFT JOIN table1
ON table2.t2_NAME = table1.t1_NAME
WHERE table1.t1_NAME IS NULL
)
AND Active_status <> 'N';
修改 我正在进行这个修改。通过使用merge.But有一些情况,如table2包含一些死数据,我想使状态为'N',因为table1和table2的源是一个由其他团队公开的远程数据库。因此想到在我现有的MERGE操作之后完成这项工作
答案 0 :(得分:1)
正如@aleksej建议的那样,你可以使用MERGE:
MERGE INTO table1 t
USING table2 s
ON(t.t1_NAME = s.t2_NAME)
WHEN NOT MATCHED UPDATE SET Active_status = 'N',
MODIFIED_DATE = sysdate
WHERE t.Active_status <> 'N'
你可以改变你的更新工作:
UPDATE table1 t
SET t.Active_status = 'N',
t.MODIFIED_DATE = sysdate
WHERE NOT EXISTS(SELECT 1 FROM table2 s
WHERE t.t1_NAME = s.t2_NAME)
AND t.Active_status <> 'N'