SQL Server 2005 — содержимое переменной теряется при

Я использую SQL Server 2005 и имею следующий оператор T-SQL:

DECLARE 
    @MP VARCHAR(500)
SELECT
    @MP = COALESCE(@MP + ',','') + [Name] + ',' + '(' + [Political Party] + ')'
FROM [MPs]
WHERE [MPs].[Region] ='Wales' 


UPDATE myTable
SET [Names and parties] = 
(SELECT @MP
WHERE myTable.[Local Region] ='Wales')

Это отлично работает и заполнит myTable @MP, где присутствует «Уэльс»; однако, если я снова запущу оператор, на этот раз, скажем, «Шотландия», все ранее обновленные записи для «Уэльса» станут NULL в myTable.

Я думаю, что я что-то здесь упускаю - использование другого имени переменной для @MP для второго поиска не работает.


person LostinShadow    schedule 04.04.2012    source источник
comment
В вашем запросе дважды есть 'Wales'. Вы обновили его до 'Scotland' в обоих местах?   -  person Oded    schedule 04.04.2012
comment
Привет, Одед, у меня есть - всякий раз, когда я запускаю этот запрос, я обновляю оба значения, чтобы они были одинаковыми.   -  person LostinShadow    schedule 04.04.2012


Ответы (2)


Я думаю, вы, вероятно, ищете это:

UPDATE myTable
SET [Names and parties] = @MP
WHERE myTable.[Local Region] = 'Wales'
person Pondlife    schedule 04.04.2012
comment
Спасибо Pondlife и @SQL Dabbler! - person LostinShadow; 04.04.2012

Второе предложение WHERE находится не в том месте. В настоящее время это относится к SELECT, а не к UPDATE, что, я думаю, вам нужно.

UPDATE myTable 
SET [Names and parties] =  @MP 
WHERE myTable.[Local Region] ='Wales'
person SQL Dabbler    schedule 04.04.2012