我有两个如下表:
TABLE1:
=======
somid, tobeupdated
1 , null
2 , null
3 , null
10 , null
TABLE2:
=======
rangeofids
2
3
9
10
11
12
13
我必须根据以下标准更新 TABLE1.tobeupdated (或发现它的'应该是值):
- 如果
TABLE1.somid NOT exists in TABLE2.rangeofids
,那么预期结果是:tobeupdated =TABLE1.somid
- 否则找到下一个
TABLE2.rangeofids
更大的可用(或未使用)TABLE1.somid
所以预期值为:bu
TABLE1:
=======
somid, tobeupdated
1 , 1
2 , 4
3 , 4
10 , 14
我很努力,但我想出的最简单的解决方案是创建一个具有完整 id 序列(从1
to max(rangeofids)+1
)的临时表,MINUS TABLE2.rangeofids
这样我就可以找到MIN(TMPTABLE.id) where TMPTABLE.ID > TABLE1.somid
.
但是没有更好的解决方案(没有临时表)吗?
注意:我不能创建过程/函数等,所以它必须是标准(Oracle 10)SQL。