iT邦幫忙

0

請問這段UPDATE語法 哪裡有誤?

都會出現 接近,之處語法不正卻" 和 接近關鍵字 '.' 之處語法不正確

update Main,(select serialNo,sum(produceQuantity) as num from source as k group by serialNo ) set Main.Unfinished =Main.Unfinished -k.num where Main.serialNo = k.serialNo

2 個回答

10
賽門
iT邦超人 1 級 ‧ 2011-10-03 15:01:09
最佳解答

我印象中, UPDATE指令只能指定一個Table, 如要同時UPDATE多個Table要用View..

所以要改成:

<pre class="c" name="code">update Main set Main.Unfinished=Main.Unfinished-(select sum(produceQuantity) 
from source k where k.serialNo=Main.serial)

但這樣寫會造成很多Performance問題, 所以...最好是

<pre class="c" name="code">update Main set Main.Unfinished=Main.Unfinished-(select sum(produceQuantity) 
    from source k where k.serialNo=Main.serial)
where Main.serial between 'xxxx' and 'yyyy'

把Main要UPDATE的範圍圈出來比較好.

大大你好 會出現這個錯誤 "sum 運算子的運算元資料類型 varchar 無效"

我只試著你指導的這段去TRY
update Main set Main.Unfinished=Main.Unfinished-(select sum(produceQuantity)
from source k where k.serialNo=Main.serial)

我也曾經試過別的語法 也是直接Unfinished-子查詢 ,出現錯誤也是一樣

賽門 iT邦超人 1 級 ‧ 2011-10-03 15:30:33 檢舉

a1986751106提到:
sum 運算子的運算元資料類型 varchar 無效

這是說SUM(produceQuantity)裏的produceQuantity資料型別為varchar??

版大.....搖頭

請您改SUM(produceQuantity)為SUM(CAST(produceQuantity as float))

感謝大大糾正,可以了,也達到想要的效果,感謝

2
pqr0007
iT邦研究生 1 級 ‧ 2011-10-03 21:07:07

查專業字典!!...

我要發表回答

立即登入回答