SQL Server 2005-变量的内容在

SQL Server 2005-变量的内容在,sql,tsql,sql-server-2005,variables,coalesce,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 W

我使用的是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”;但是,如果我再次运行该语句,这次使用的是'Scotland',则之前更新的'Wales'的所有条目在myTable中都将变为NULL


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

我想您可能正在寻找以下内容:

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

我想你可能在找这个:

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

第二个WHERE子句位于错误的位置。它当前应用于选择,而不是更新,我认为这是您想要的

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

第二个WHERE子句位于错误的位置。它当前应用于选择,而不是更新,我认为这是您想要的

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

您在查询中有两次“威尔士”。您在两个地方都将其更新为
'Scotland'
了吗?您好,我已经更新了-每当我运行此查询时,我都会将这两个值更新为您在查询中的
'Wales'
两次。您是否在这两个地方都将其更新为
'Scotland'
?嗨,Oded,我已经更新了-每当我运行此查询时,我都会将这两个值更新为samethaks Pondlife和@SQL Dabbler!感谢Pondlife和@SQL Dabbler!