Ich versuche, eine Variable aus einer SQL-Abfrage festzulegen:
declare @ModelID uniqueidentifer
Select @ModelID = select modelid from models
where areaid = 'South Coast'
Offensichtlich mache ich das nicht richtig, da es nicht funktioniert. Kann jemand eine Lösung vorschlagen?
Vielen Dank!
sql
sql-server
tsql
Herr Cricket
quelle
quelle
Antworten:
Verwenden von SELECT:
Verwenden von SET:
In dieser Frage finden Sie den Unterschied zwischen der Verwendung von SELECT und SET in TSQL .
Warnung
Wenn diese select-Anweisung mehrere Werte zurückgibt (zunächst schlecht):
SELECT
wird der Variablen der letzte zurückgegebene Wert zugewiesen (wie gesagt), ohne Fehler oder Warnung (dies kann zu logischen Fehlern führen).SET
tritt ein Fehler aufquelle
Wenn Ihre select-Anweisung mehrere Werte zurückgibt, wird Ihrer Variablen der letzte zurückgegebene Wert zugewiesen.
Referenz zur Verwendung von SELECT mit Variablen: http://msdn.microsoft.com/en-us/library/aa259186%28SQL.80%29.aspx
quelle
quelle
Ich ziehe es vor, es einfach aus der Deklarationsanweisung zu setzen
quelle
Verwenden Sie
TOP 1
diese Option, wenn die Abfrage mehrere Zeilen zurückgibt.quelle
Sie können dies verwenden, aber denken Sie daran, dass Ihre Abfrage 1 Ergebnis liefert. Mehrere Ergebnisse lösen die Ausnahme aus.
Ein anderer Weg:
quelle
In diesem Fall ist Ihr Ergebnis der letzte Datensatz, wenn Sie zwei oder mehr Ergebnisse zurückgegeben haben. Beachten Sie dies, wenn möglicherweise zwei weitere Datensätze zurückgegeben werden, da das erwartete Ergebnis möglicherweise nicht angezeigt wird.
quelle
Es gibt drei Ansätze:
Die folgende Abfrage beschreibt die Vor- und Nachteile der einzelnen:
quelle
Um Variablen mithilfe eines SQL zuzuweisen, wählen Sie die unten gezeigte bewährte Methode
Wenn Sie mehr als eine Variable in einer einzelnen Zeile zuweisen müssen, können Sie dieselbe SELECT INTO verwenden
quelle