SQL-while-Schleife mit der Temp-Tabelle
Brauche ich zum erstellen einer temporären Tabelle und aktualisieren Sie dann die ursprüngliche Tabelle. Erstellen Sie die temporäre Tabelle ist nicht ein problem.
create table #mod_contact
(
id INT IDENTITY NOT NULL PRIMARY KEY,
SiteID INT,
Contact1 varchar(25)
)
INSERT INTO #mod_contact (SiteID, Contact1)
select r.id, r.Contact from dbo.table1 r where CID = 142
GO
Jetzt brauche ich eine Schleife über das table-und update-r.Kontakt = SiteID + r.Kontakt
Habe ich noch nie verwendet, eine while-Schleife vor und kann nicht scheinen, um alle Beispiele die ich gesehen habe, arbeiten.
- verwenden Sie nicht eine Schleife.
- Korrigiert habe ich es r.Kontakt = SiteID + r.Kontaktieren Sie tut mir Leid.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, in mehrfacher Hinsicht, aber ich glaube, du bist auf der Suche nach einer Möglichkeit mit einem cursor.
Ein cursor ist eine Art Zeiger in eine Tabelle, die, wenn Sie erhöht Punkte, um zum nächsten Datensatz. ( es ist mehr oder weniger analogeous einer for-next-Schleife )
verwenden ein cursor können Sie Folgendes tun:
Es ist nicht der effizienteste Weg, um dies getan, aber ich denke, das ist, was Sie gesucht haben.
Hoffe, es hilft.
Verwenden Sie einen set-basierten Ansatz - keine Notwendigkeit, um eine Schleife (aus der kleinen details):
Ihr Gehirn will, dies zu tun:
SQL-basiert und ermöglicht es Ihnen, eine ganze Reihe von Datensätze und aktualisieren Sie Sie in einem einzigen Befehl. Die Schönheit dieser ist, können Sie den
WHERE
- Klausel zum filtern bestimmter Zeilen, die nicht benötigt werden.ON m.id=r.id
-- Denken Sie, das ist eine sichere Möglichkeit, die Aktualisierung der ursprünglichen Tabelle?m.id
ist die IDENTITY-Spalte der temporären Tabelle und derr.id
Karten zuSiteID
in die temp Tabelle. Sieht aus wie Schlamperei zu mir, aber ich bin bereit, korrigiert zu werden 😉Wie andere erwähnt haben, lernen, wie man Schleifen in SQL ist allgemein eine schlechte Idee; jedoch, da Sie versuchen zu verstehen, wie etwas zu tun, hier ein Beispiel:
Warum die Verwendung einer temporären Tabelle überhaupt? Ihre
CID
Spalte nicht angezeigt wird in die temporäre Tabelle, so dass ich nicht sehen, wie können Sie erfolgreich zu aktualisieren, die ursprüngliche Tabelle mitSiteID
, es sei denn, es ist nur eine Zeile, woCID = 142
in denen die Verwendung einer temp-Tabelle ist definitiv overkill.Können Sie genau dies tun:
Hier ist ein Verwandtes Beispiel, die helfen können, bekommen Sie zu 'denken in SQL':
Vorausgesetzt
A
undB
sind von der gleichen Art, dieser wäre erfolgreich tauschen Ihre Werte.Versuchen, diese: