2012-04-04 90 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'