Использование обновления при использовании выбора в SQL - PullRequest
2 голосов
/ 11 мая 2011

мое программирование на SQL ограничено, поэтому у меня возникли проблемы с этим, вероятно, базовым кодом.Я пытаюсь обновить запись по мере ее извлечения, я знаю, что могу обновить ее, если разделю ее на две процедуры, но я хотел бы обновить записи, которые она извлекает для удобства.В любом случае ниже приведен код, и, надеюсь, он покажет, что я пытаюсь выполнить:

Update dbo.ASNs
    Set Sent = 'Yes'
    Where ASNNumber In
(
    Select * From dbo.ASNs
    Where Sent = 'No'
    for xml auto, ELEMENTS, ROOT('ASNs')
)

Ответы [ 4 ]

2 голосов
/ 11 мая 2011

Я думаю, вы имеете в виду это:

UPDATE dbo.ASNs
SET Sent = 'Yes'
OUTPUT inserted.*
WHERE Sent = 'No'
FOR XML auto, ELEMENTS, ROOT('ASNs')

См. здесь

1 голос
/ 11 мая 2011

предложение IN неверно, вы не можете сравнить столбец с *.

...Where ASNNumber In (Select * From dbo.ASNs...

, это должно быть что-то вроде:

...Where ASNNumber In (Select ASNNumber  From dbo.ASNs ...
0 голосов
/ 11 мая 2011

Без каких-либо других оптимизаций:

UPDATE  dbo.ASNs
SET     Sent = 'Yes'
FROM    dbo.ASNs
WHERE   ASNNumber IN ( SELECT   ASNNumber
                       FROM     dbo.ASNs
                       WHERE    Sent = 'No'
        FOR     XML AUTO ,
                    ELEMENTS ,
                    ROOT('ASNs') )
0 голосов
/ 11 мая 2011

Попробуйте использовать UPDATE с OUTPUT INTO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...