webentwicklung-frage-antwort-db.com.de

Aktualisieren Sie mehrere Spalten in SQL

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.

150
Joe

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

79
gbn

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.

188
marc_s

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 )

20
Alex K.

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
16
John Woo

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
13
   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
2
Peter

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

1
Dragos Custura

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

0
Mohamed Bekheit