嵌套选择tsql更新:更简单的方法?

时间:2009-12-16 23:15:02

标签: sql-server tsql

我有一个我试图运行的嵌套查询;但是我必须用-1来筛选数字我有以下内容:

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)

我正确地接近这个吗?

1 个答案:

答案 0 :(得分:1)

这不应该是嵌套查询。您想要的是将发票表连接到billingLog表以确定要加入的行。

使用'update / set / from / where'语法,您可以在更新中使用连接,并且可以很好地读取。

我使用了一个公用表表达式[the; 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  )