Gibt es eine Möglichkeit, mehrere Spalten in SQL Server auf dieselbe Weise zu aktualisieren, wie eine insert-Anweisung verwendet wird?
So etwas wie:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Oder so ähnlich, anstatt so:
update table set a=t2.a,b=t2.b etc
wenn Sie über 100 Spalten haben, kann das Schreiben ziemlich mühsam sein.
Der "ermüdende Weg" ist Standard-SQL und wie Mainstream-RDBMS es macht.
Bei mehr als 100 Spalten besteht höchstwahrscheinlich ein Entwurfsproblem. Außerdem gibt es in Client-Tools (z. B. UPDATE-Anweisungen) oder mithilfe von ORMs mildernde Methoden
Versuche dies:
UPDATE table1
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id
Das sollte in den meisten SQL-Dialekten außer Oracle funktionieren.
Und ja - es ist viel Tippen - es ist die Art und Weise, wie SQL dies tut.
Die Update table1 set (a,b,c) = (select x,y,x)
-Syntax ist ein Beispiel für die Verwendung von Zeilenwertkonstruktoren. Oracle unterstützt dies , MSSQL nicht. ( Element verbinden )
Ihre Anfrage ist nahezu korrekt. Das T-SQL dafür ist:
UPDATE Table1
SET Field1 = Table2.Field1,
Field2 = Table2.Field2,
other columns...
FROM Table2
WHERE Table1.ID = Table2.ID
Syntax
UPDATE table-name
SET column-name = value, column-name = value, ...
WHERE condition
Beispiel
UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6
UPDATE t1
SET
t1.a = t2.a,
t1.b = t2.b,
.
.
.
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id=t2.id
Sie können dies versuchen
Ich habe es auf diese Weise versucht und es funktioniert gut:
UPDATE
Emp
SET
ID = 123,
Name = 'Peter'
FROM
Table_Name
hier ist eine, die funktioniert:
UPDATE `table_1`
INNER JOIN
`table_2` SET col1= value, col2= val,col3= val,col4= val;
value ist die Spalte aus table_2
Wenn Sie dies mehrmals wiederholen müssen, können Sie dies wie bei mir tun. Bringen Sie die Namen Ihrer Spalten in eine Zeile im Excel-Arbeitsblatt (notieren Sie sich am Ende jedes Spaltennamens (=), was in Notepad ++ einfach ist) auf der rechten Seite. Erstellen Sie eine Spalte zum Kopieren und Einfügen Ihres Werts, der den neuen Einträgen unter entspricht jede Spalte. Dann setzen Sie rechts von ihnen in einer unabhängigen Spalte die Kommas wie vorgesehen
Dann müssen Sie Ihre Werte jedes Mal in die mittlere Spalte kopieren und dann einfach einfügen und ausführen
Ich kenne keine einfachere Lösung