2017-11-13 4 views
0

Ich habe zwei Tabellen. Die Tabelle, die ich zu aktualisieren versuche, ist Tabelle A, die einige IDs ProfileIDs nicht hat. Auf der anderen Seite hat Tabelle B alle IDs. Ich versuche, die Spalte in Tabelle A basierend auf einer Abfrage zu aktualisieren. Wenn ich den Tabellen beitrete, erhalte ich alle Ergebnisse in meiner Abfrage, und wenn ich versuche, die Ergebnisse in meiner Spalte zu aktualisieren/einfügen, kann ich nicht in meine Tabelle einfügen. Ich habe vor, meine Ergebnisse mit der folgenden AbfrageDaten in Spalte basierend auf Abfrage einfügen

insert into TableA a 
(profileID) 

select b.profileID 
from tableA 
join TableB B on B.userID = A.userID 

where a.profileID = '' or a.profileID is null 


    Table A               Table B 

UserID | profileID | lastname | Firstname    UserID | profileID | lastname | Firstname 
0Wung  Clara     0Wung  Clara 
0512356 14753  Williams Michael     0512356 14753  Williams  Michael 
0956356    Walters Jeff     0956356 94356  Walters  Jeff 
0486312 68956  Wwagner George     0486312 68956  Wwagner George 


select A.*, B.profileID 
from TableA A 
join TableB B on B.userID = A.userID 


Results 



UserID | profileID | lastname | Firstname 
0Wung  Clara 
0512356 14753  Williams  Michael 
0956356 94356  Walters  Jeff 
0486312 68956  Wwagner George 
+2

Welche RDBMS verwenden Sie? Möchten Sie TabelleA aktualisieren, um die Profil-IDs zu haben? Ihre Ergebnistabelle ist nicht korrekt. A. * ist da, aber B.profileID ist nicht. –

+0

Da diese Benutzer-IDs bereits in Tabelle A vorhanden sind, müssen Sie eine UPDATE-Anweisung anstelle einer INSERT-Anweisung ausführen. Oder Sie können diese Datensätze mit leerer profileID löschen und dann die neuen Werte einfügen. Achten Sie beim Einfügen auch darauf, dass alle Spalten in der insert select-Klausel enthalten sind. Andernfalls fügt es Standardwerte in die Spalten ein, die Sie in Ihrer SELECT-Klausel nicht angegeben haben. –

+0

Mögliches Duplikat von [Wie aktualisiere ich von einem SELECT in SQL Server?] (Https://stackoverflow.com/questions/2334712/how-do-i-update-von-einem-select-in-sql-server) –

Antwort

0

Sie müssen geben Sie Ihre Tabelle (TableA) mit UPDATE Anweisung nicht INSERT INTO aktualisieren:

UPDATE TableA 
SET TableA.profileID = TableB.profileID 
FROM TableB 
    INNER JOIN TableA ON TableA.userID = TableB.userID 
WHERE TableA.profileID = '' OR TableA.profileID IS NULL 
2

Sie sollten ‚INSERT‘ Anweisung nicht verwenden, für die Aktualisierung ein Tisch. Verwenden Sie stattdessen "UPDATE".

UPDATE tableA SET tableA.profileID = tableB.profileID FROM tableB b 
INNER JOIN TableA a ON a.userID = b.userID WHERE 
a.profileID = '' OR a.profileID IS NULL; 
Verwandte Themen