2009-12-16 65 views
0

我得到了一個嵌套的查詢,我試圖運行;然而,我不得不篩選與-1號我有以下幾點:tsql更新與嵌套select:更簡單的方法?

update invoices set type = 5 where tranno like dbo._fnStripLeadZeroes(( 
    select invoice_number from [bob.jupiter.com].webap.dbo.billinglog)) + '-1' 

與INVOICE_NUMBER(varchar15)和tranno(varchar10)

我是正確處理這個?

+0

子查詢看起來不像標量。 – 2009-12-16 23:17:23

+0

你可以添加一些示例數據嗎?顯示一些會更新的記錄,以及一對不會的記錄 – Ray 2009-12-16 23:20:16

回答

1

這不應該是嵌套查詢。您需要的是將發票表加入到billingLog表中,以確定要加入的行。

使用'update/set/from/where'語法可讓您在更新中使用連接,並且讀取效果很好。

我使用了一個公用表表達式[with; billing as(..)]來幫助簡化查詢。

最後,我將LIKE更改爲'=',因爲您沒有使用通配符,所以類似的功能是等同的。

;with billing as 
(
    select dbo._fnStripLeadZeros(invoice_number) + '-1' as invoice_number 
    from [bob.jupiter.com].webapp.dbo.billinglog 
) 
update inv 
set inv.type = 5 
from invoices inv 
inner join billing b 
    on (inv.tranno = b.invoice_number )