tsql обновление с вложенным выбором: проще? - PullRequest
0 голосов
/ 17 декабря 2009

Я получил вложенный запрос, который я пытаюсь выполнить; однако я должен проверять числа с -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) и транно (varchar10)

правильно ли я подхожу к этому?

1 Ответ

1 голос
/ 17 декабря 2009

Это не должен быть вложенный запрос. Вам нужно присоединить таблицу счетов к таблице 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  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...