ich versuche, hier zu verstehen, was (eine der Antworten auf diese Frage: Concatenate many rows into a single text string?): geschiehtZuweisen mehrerer Zeilen nicht-Tabellenvariable
DECLARE @Names VARCHAR(8000)
SELECT @Names = COALESCE(@Names + ', ', '') + Name
FROM People
So habe ich eine beispielhafte Tabelle ‚Test‘ mit Daten: Jetzt
Col1
----
abc
xyz
ich ausführen:
DECLARE @Concatenation VARCHAR(8000)
SELECT @Concatenation = COALESCE(@Concatenation + ', ', '') + Col1 FROM test
Select @Concatenation
Und als Ergebnis habe ich ein einziges Ergebnis abc, xyz
Wenn ich ausführen:
DECLARE @Concatenation VARCHAR(8000)
SELECT @Concatenation = Col1 FROM test
Select @Concatenation
ich ein einzelnes Ergebnis erhalten xyz
Die Frage, warum tut eine Zuordnung wie select @variable = @variable + column
die @variable
verursacht über die gesamte Spalte zu wiederholen? Und wenn ich es wie select @variable = column
mache, welche Aufzeichnung von der Spalte zurückgegeben wird? Zufällig?
das ist undokumentiert Hack ein Ja, es funktioniert, aber Sie sollten XML Trick verwenden, um dies zu tun. –
Für Ihre letzte Frage: Die Zuweisung wird den ** letzten ** Datensatz verwenden. Ich denke, es durchläuft sowieso alle Datensätze, und mit der "Koaleszenz" -Methode werden tatsächlich alle Datensätze gespeichert. – HoneyBadger
@HoneyBadger Wie definierst du den letzten Datensatz? Es gibt keinen Cluster oder irgendeinen Index. – zaptask