我試圖從不同的表例如減去一個表中的值,如果我有兩個表樣附:Oracle子查詢減法。
我想從QD subtractracting表QI所以更新的數字新表將
QI: b 800 ç700
什麼是做到這一點的最好方法是什麼?由於事先
我試圖從不同的表例如減去一個表中的值,如果我有兩個表樣附:Oracle子查詢減法。
我想從QD subtractracting表QI所以更新的數字新表將
QI: b 800 ç700
什麼是做到這一點的最好方法是什麼?由於事先
假設將僅存在每col1
值0或1 qd
行:
update qi
set col2 = col2 - (select col2 from qd where qd.col1 = qi.col1)
where exists (select null from qd where qd.col1 = qi.col1);
的where exists
子句是爲了防止更新qi
行不具有qd
對應物。
最好不要在這種情況下使用子查詢。使用這樣的:
select I.COL1,
(I.COL2 - D.COL2) as COL2
from TABLE_QI I
left join TABLE_QD D on D.COL1 = I.COL1;
這裏是SQL Fiddle
如果QI中有任何QD中沒有匹配行的行,它們將設置爲空; [本例中爲'col1''d'](http://sqlfiddle.com/#!4/946e9/1)。 – 2015-03-02 18:20:48
您當然也不能加入更新,至少不使用子查詢* 8-) – 2015-03-02 18:29:50
如果什麼列有不同的名字?嘗試這個我去像子查詢返回多個行。 – bp01442 2015-03-02 19:54:56
@ bp01442 - 顯然使用你的真實列名。如果每個QI有QD中有多行,那麼你可能只需要一個聚合 - 在子查詢中執行'sum(c2)'。 – 2015-03-02 20:36:50
酷的作品感謝老兄。 – bp01442 2015-03-02 20:54:20