Create table von SQL-Abfrage
Dies ist ein leidiges Thema und ich kann nicht herausfinden, wie es zu lösen. Ich bin Mit Microsoft SQL Server 2008.
Also ich habe zwei Tabellen und ich muss das update für beide. Sie teilen sich einen gemeinsamen Schlüssel, id sagen. Ich möchte update Table1
mit ein paar Sachen und dann aktualisieren Sie die Table2
Zeilen die waren bzw. modifiziert Table1
.
Das Problem ist, dass ich nicht genau weiß, welche Zeilen geändert wurden, denn ich nehme Sie zufällig mit ORDER BY NEWID()
so dass ich wahrscheinlich nicht verwenden eine JOIN
auf Table2
in keiner Weise. Ich bin versucht zu retten, die notwendigen details, die geändert wurden, in meiner Abfrage für Table1
und übergeben Sie an Tabelle2
Dies ist, was ich versuche zu tun,
CREATE TABLE IDS (id int not null, secondid int)
SELECT [Table1].[id], [Table1].[secondid]
INTO IDS
FROM
(
UPDATE [Table1]
SET [secondid]=100
FROM [Table1] t
WHERE t.[id] IN
(SELECT TOP 100 PERCENT t.[id] FROM [Table1]
WHERE (SOME_CONDITION)
ORDER BY NEWID()
)
)
UPDATE [Table2]
SET some_column=i.secondid
FROM [Table2] JOIN IDS i ON i.id = [Table2].[id]
Aber ich bekomme
Falsche syntax in der Nähe des Schlüsselwortes 'UPDATE'.
Die Frage ist also: wie kann ich das Problem lösen Sie die syntax-Fehler oder ist es ein besserer Weg, dies zu tun?
Hinweis: die Abfrage eingeschlossen zwischen den Klammern der ersten FROM
gut funktioniert, die vor dieser neuen Anforderung, so bezweifle ich, dass es ein problem gibt. Oder vielleicht doch?
BEARBEITEN: die Änderung der zweiten UPDATE
als skk schlug vor, noch führt zu den gleichen Fehler (auf genau die folgende Zeile enthält UPDATE
):
UPDATE [Table2]
SET some_column=i.secondid
FROM [Task] JOIN IDS i on i.[id]=[Table2].[id]
WHERE i.id=some_value
- Haben Sie versucht, mithilfe von Triggern. Ich weiß, es hat seine eigene Leistung bezogenen Themen, aber könnte es vereinfachen, die gesamte Aufgabe.
- Warum würden Sie ändern von Zeilen nach dem Zufallsprinzip?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Er beschwert sich, weil Sie nicht aliasing die abgeleitete Tabelle verwendet, in der ersten Abfrage, unmittelbar vor
UPDATE [Table2]
.Wenn Sie einen alias hinzufügen, erhalten Sie eine andere Fehlermeldung:
Führt zurück zu @Adam Wenger seine Antwort.
Nicht sicher, ob ich völlig verstehen, was Sie versuchen zu tun, aber die folgende sql ausgeführt wird (nach dem Austausch
SOME_CONDITION
):Erstellen, anstatt eine neue Tabelle manuell, SQL-server hat die AUSGABE Klausel zu helfen, mit dieser
Der Update-syntax ist wie folgt
aber Sie haben VON keyword auch in diesem.
EDIT:
Ändern Sie den code wie folgt und versuchen Sie es erneut
FROM table1 AS t1
in IhremUPDATE
Aussage, dass funktioniert so lange, wie Sie auch Referenz-aliasUPDATE t1