Aktualisieren Sie mehrere Zeilen mit innerem Join in SQL server

Ich habe diese gespeicherte Prozedur:

create procedure jk_insertSPUSH @regID int, @favDT favoriteID readonly as begin select * into #_tmp_fav_table from @favDT alter table #_tmp_fav_table add handsetID varchar(max) update #_tmp_fav_table set handsetID=(select handset_type_id from registration r INNER JOIN buddies b ON b.reg_id=@regID INNER JOIN @favDT f ON b.favorite_id=f.favorite_id where r.reg_id=f.favorite_id) end 

Ich muss die Spalte aktualisieren, die ich der #_tmp_fav_table Tabelle #_tmp_fav_table hinzugefügt #_tmp_fav_table aber meine Auswahl gibt mehrere Werte zurück … und ich muss alle Zeilen der Tabelle mit all dem handset_type_id , die nach dem f.favorite_id werden muss das Update so oft machen wie ich f.favorite_id

Ich hoffe ich habe mein Problem klar …

Nicht getestet, aber so etwas könnte dir helfen:

  UPDATE t SET handsetId = r.handset_type_id FROM #_tmp_fav_table t INNER JOIN registration r ON r.favorite_id=t.favorite_id INNER JOIN buddies b ON b.reg_id=@regID INNER JOIN @favDT f ON b.favorite_id=f.favorite_id where r.reg_id=f.favorite_id 

Sie können UPDATE FROM statement verwenden:

 UPDATE #_tmp_fav_table SET handsetID = handset_type_id FROM #_tmp_fav_table FT INNER JOIN @favDT F ON ... INNER JOIN registration r ON r.reg_id=f.favorite_id INNER JOIN buddies b ON ...