Aktualisierungsdaten in einer Tabelle basierend auf anderen Tabellendaten

Ich habe Tisch A und Tabelle B wie unten. Wo beide Kontonummern und ID haben. Ich möchte die ID für die Kontonummer in Tabelle B aus Tabelle A herausfinden und die Tabelle B mit dem ID-Wert aus Tabelle A aktualisieren. Ich möchte Tabelle A wie Tabelle B aussehen. Wie kann man das erreichen?

Ich habe es versucht

select distinct A.ID,A.ACCTNO,B.ACCTNO from TableA as A inner join TableB as B on A.ACCTNO = B.ACCTNO 

Bildbeschreibung hier eingeben

mein Ausgang sollte sein: Bildbeschreibung hier eingeben

Update basiert auf join … Sie können auch null in ACCTNO für bessere performance vernachlässigen

 update B set B.ID=A.ID from TableB as B join TableA as A on A.ACCTNO = B.ACCTNO where B.ACCTNO is not null; 

Verwenden Sie diese Abfrage: –

 update t2 set t2.id=t1.id from tableB t2 inner join tableA t1 on t2.acctno=t1.acctno 

Sie müssen beide Abfragen an Ihre gewünschte Ausgabe ausführen

 INSERT INTO TableB (ID,ACCTNO) SELECT a.ID, a.ACCTNO FROM TableA as a LEFT JOIN TableB as b on a.ACCTNO = b.ACCTNO WHERE b.ACCTNO IS NULL; 

und

 update b set b.ID = a.ID from TableB as b left join TableA as a ON a.ACCTNO = b.ACCTNO where b.ACCTNO IS NOT null; 

mit einem CTE

 WITH CTE AS (SELECT T1.ID AS TABLEA_ID, T1.ACCTNO AS TABLEA_ACCID, T2.ID AS TABLEB_ID, T2.ACCTNO AS TANLEB_ACCID FROM TableA T1 INNER JOIN TableB T2 ON T1.ACCTNO= T2.ACCTNO) UPDATE CTE SET TABLEA_ID= TABLEB_ID 

Hoffe seine Arbeit !!

Glückliche Codierung !!

Verwenden Sie JOIN mit update .

Abfrage

 update t1 set t1.ID = t2.ID from TableB t1 join TableA t2 on t1.ACCTNO = t2.ACCTNO; 

Aktualisieren

Zum Ausfüllen der Nullreihen.

Abfrage

 mit cte als (
     select rn = row_number () über (
         partition von acctno
         bestellen per acctno
     ), *
     aus TableB 
 ),
 cte2 als (
     select rn = row_number () über (
         bestellen per acctno
     ), *
     von TableA
     wo nicht existiert (
         Wähle 1 aus TableB
         wo TableA.acctno = TableB.acctno
     )
 )
 aktualisieren t1
 set t1.Id = t2.Id,
 t1.Acctno = t2.Acctno
 von cte t1
 join cte2 t2
 auf t1.rn = t2.rn
 wo t1.Id ist null;

Das folgende SQL füllt Tabelle B mit den IDs aus Tabelle A, wo die acctno Übereinstimmungen:

 UPDATE table_b SET ID=table_a.id FROM table_b INNER JOIN table_a on table_b.acctno=table_a.acctno