2012-04-04 94 views
2

失去了我使用的是SQL Server 2005和具有下面的T-SQL语句:SQL Server 2005中 - 变量的内容在

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其中“威尔士”存在;然而,如果我再次运行语句,这次用'苏格兰'来说,'Wales'的所有先前更新的条目将在myTable中变为NULL。

我想我在这里丢失了一些东西 - 对第二次搜索使用@MP的不同变量名称不起作用。

+0

您在查询中有两次“Wales”。你有没有在两个地方更新到“苏格兰”? – Oded 2012-04-04 09:49:51

+0

嗨Oded,我有 - 每当我运行这个查询我会更新两个值是相同的 – LostinShadow 2012-04-04 13:17:55

回答

2

我想你可能寻找这样的:

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

感谢Pondlife和@SQL Dabbler! – LostinShadow 2012-04-04 14:04:55

2

第二WHERE子句是放错了地方。它目前适用于SELECT,而不是UPDATE,我认为这是你想要的。

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