我目前正在编写更新语句以保持可查询表不断更新。两个表之间的架构是相同的,内容并不重要:
STAGING
ID
NAME
COUNT
PRODUCTION
ID
NAME
COUNT
我的更新语句如下所示:
update PRODUCTION
set name = (select stage.name from staging stage where stage.name=name and rownum <2),
count = (select stage.countfrom staging stage where stage.count=count and rownum <2);
需要注意的两件事是 1)我的更新结束时没有 where 子句(这可能是问题所在)和 2)更新后的所有记录都具有相同的值。我的意思是:
BEFORE UPDATE:
1,"JOHN", 12;
2,"STEVE",15;
3,"BETTY",2;
AFTER UPDATE
1,"JOHN", 12;
2,"JOHN",12;
3,"JOHN",12;
我的问题是如何解决这个问题,以便表正确反映来自暂存的“新”数据作为正确的 SQL 更新?
更新
因此,我的暂存数据可能会巧合地反映其中的内容,PRODUCTION
并且为了讨论,它将:
STAGING DATA TO MERGE:
1,"JOHN", 12;
2,"STEVE",15;
3,"BETTY",2;
更新第二个
我想运行的查询是这样的:
update PRODUCTION
set production.name = staging.name,
production.count = staging.count
where production.name = staging.name;
然而,这会导致“staging.name”上出现无效标识符问题