2016-08-08 26 views
0

Ich bin ziemlich unerfahren, wenn es um SQL geht, also entschuldige ich mich, wenn dies eine Anfängerfrage ist.SQL Server: Kopieren von Spalten in eine andere Tabelle basierend auf einem Join

Ich muss Spalten zu einer Tabelle in einer Datenbank basierend auf einem Join aus einer anderen Datenbank hinzufügen, mit einer gemeinsamen Spalte zwischen den beiden Tabellen.

+0

http://www.blackwasp.co.uk/SQLSelectInsert.aspx Suchmaschinen Tada – Will

+0

@will gute Informationen, aber das ist ein Update-Vorgang obwohl, weil die zweite Tabelle bereits Werte in einer anderen Spalte hat, aber immer noch eine schnelle Suche sollte Sie dort. Die Spalten, die Sie kopieren möchten, müssen in Ihrer Tabelle vorhanden sein, oder Sie müssen sie zuerst hinzufügen, dann führen Sie einfach ein Update mit einem Join zwischen den Tabellen durch, hier finden Sie eine Dokumentation dazu http://stackoverflow.com/questions/1293330/Wie-kann-ich-ein-Update-Anweisung-mit-Join-in-sql – Matt

+0

@Matt Vielen Dank für Ihre Hilfe! Um das klarzustellen, muss ich eine Tabelle mit allen vorhandenen Spalten erstellen und dann das Skript ausführen, um es mit den Informationen aus der Quellentabelle zu füllen. – Eric

Antwort

1

Wenn Sie sagen "Hinzufügen von Spalten zu einer Tabelle in einer Datenbank", meinen Sie, dass Sie eine Tabelle haben, z.

create table Targets (
    TargetID int identity(1,1) not null , 
     constraint pkc_Target primary key clustered (TargetID) , 
    TargetField1 varchar(64) not null , 
    .....) 

Und Sie möchten zusätzliche Spalten zu dieser Tabelle hinzufügen? Wenn ja, würden Sie so etwas wie

alter table dbo.Targets add TargetNewField1 varchar(64) null 

Danach tun Sie leere Spalten in der Tabelle haben würde, und könnte dann eine update laufen in die Lücken zu füllen, so etwas wie:

update dbo.Targets 
set dbo.Targets.TargetNewField1 = dbo.Source.SourceField1 
from dbo.Targets 
inner join dbo.Source 
on dbo.Targets.SomeUniqueField = dbo.Source.SomeUniqueField 
+0

Dies ist sehr hilfreich! Ich habe eine Tabelle mit einer einzelnen Spalte, die mit einer anderen Tabelle abgeglichen wird, die wiederum verwendet wird, um mit einer anderen Tabelle übereinzustimmen. Wenn ich dieses Recht verstehe, füge ich der Zieltabelle alle geeigneten Spalten hinzu und führe dann ein paar der Aktualisierungsbefehle aus, um die Felder mit den erforderlichen Informationen zu füllen. – Eric

+0

Ja - so ist es gemacht. Ja, Sie könnten eine Anweisung 'select ... in' verwenden, aber das würde Ihnen nur eine andere Tabelle mit dem darin enthaltenen Ergebnis liefern, anstatt Spalten zu Ihrer bestehenden Tabelle hinzuzufügen. –

+0

Nachdem du mit deinem Vorschlag gespielt hast, läuft alles! Vielen Dank für deine Hilfe. – Eric