Ich bin relativ neu in SQL und ich versuche, eine Abfrage zu schreiben, die das Ergebnis von mehreren Zeilen in eine lokale VariableSQL Query Ergebnisse zu lokalen Variablen ohne eindeutige Kennung
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
FROM table)
--Does important stuff to the @x variable
SELECT @x
Während meiner Recherchen zuweisen Ich habe festgestellt, dass dies nicht funktioniert, da die Unterabfrage nur einen Wert zurückgeben kann und meine Abfrage mehrere Ergebnisse liefert. Allerdings kann ich nicht so etwas tun:
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT someCol
FROM table
where id= 'uniqueIdentifier')
--Does important stuff to the @x variable
SELECT @x
Der Grund, warum ich kann nicht verwenden, wo Klausel ist, dass ich dies für die gesamte Tabelle tun muß und nicht nur eine Zeile. Irgendwelche Ideen?
EDIT: Ich erkennen meine Frage zu breit war, so werde ich versuchen, den Code neu zu formatieren einig Kontext
SELECT col_ID, col_Definition
FROM myTable
zu geben Wenn ich diese Abfrage col_Definition laufen war eine große varchar zurückkehren würde, die eine Menge hält von Informationen wie dem Primärschlüssel einer anderen Tabelle, die ich zu erhalten versuche. Sagen wir zum Beispiel:
DECLARE @x VARCHAR(MAX)
SET @x= (SELECT col_Definition
FROM myTable
WHERE col_ID = 1)
--Function to do the filtering of the varchar variable that works as expected
SELECT @x as [Pk of another table] --returns filtered col_Definition
Dies funktioniert wie erwartet, da es eine einzelne Zeile zurückgibt. Ich möchte jedoch diese Abfrage ausführen können, so dass es das gefilterte Varchar für jede einzelne Zeile in der Tabelle "myTable" zurückgibt.
Warum müssen Sie alle Zeilen in 1 Variable setzen? Warum nicht eine temporäre Tabelle verwenden? –
Der einzige Grund, warum ich es in eine Variable schreiben möchte, ist, dass ich die Ergebnisse filtern kann. Die Daten in "someCol" sind ein Varchar, das ziemlich lang ist und den Primärschlüssel einer anderen Tabelle enthält. Also verwende ich die Variable, um die Arbeit zu filtern und dann die gefilterten Ergebnisse anzuzeigen. Dies funktioniert für eine einzelne Zeile, aber ich habe keine Ahnung, wie ich es mit mehreren Zeilen angehen soll. Ich werde jedoch versuchen, eine temporäre Tabelle zu verwenden! @WEI_DBA – vax