2012-04-04 5 views
2

verloren Ich bin mit SQL Server 2005 und haben die folgende T-SQL-Anweisung:SQL Server 2005 - Inhalt der Variablen auf

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') 

Dies funktioniert gut und wird bevölkern myTable mit @MP wo 'Wales' ist anwesend; Wenn ich die Anweisung jedoch erneut ausführe, diesmal mit "Schottland", werden alle zuvor aktualisierten Einträge für "Wales" in myTable zu NULL.

Ich glaube, ich vermisse hier etwas - die Verwendung eines anderen Variablennamens für @MP für die zweite Suche funktioniert nicht.

+0

Sie haben zweimal "Wales" in Ihrer Abfrage. Hast du es an beiden Orten auf "Schottland" aktualisiert? – Oded

+0

Hallo Oded, ich habe - wenn ich diese Abfrage ausführen würde ich beide Werte aktualisieren, um die gleichen zu sein – LostinShadow

Antwort

2

Ich glaube, Sie sind wahrscheinlich für diese Suche:

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

Danke Pondlife und @ SQL Dabbler! – LostinShadow

2

Die zweite WHERE-Klausel in der falschen Stelle ist. Es bezieht sich momentan auf SELECT und nicht auf das UPDATE, was ich denke, was Sie wollen.

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