SQL Server 2005 - 变量的内容丢失了

时间:2012-04-04 09:46:15

标签: sql tsql sql-server-2005 variables coalesce

我正在使用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')

这样可以正常工作,并在@MP中填充myTable,其中'Wales'存在;但是,如果我再次运行该语句,这次说'苏格兰',那么'威尔士'的所有先前更新的条目将在myTable中变为NULL。

我想我在这里遗漏了一些东西 - 为@MP使用不同的变量名进行第二次搜索不起作用。

2 个答案:

答案 0 :(得分:2)

我想你可能正在寻找这个:

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

答案 1 :(得分:2)

第二个WHERE子句位置错误。它目前适用于SELECT,而不是UPDATE,我认为这就是你想要的。

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