在sql server中使用内连接更新多行

时间:2013-12-03 13:52:53

标签: sql sql-server stored-procedures sql-update inner-join

我有这个存储过程:

 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

我需要更新我添加到临时表#_tmp_fav_table的列,但是我的select返回了几个值...我需要更新表中包含所有handset_type_id的所有行根据{{​​1}}返回,因此我需要进行多次更新f.favorite_id

我希望我明白我的问题......

2 个答案:

答案 0 :(得分:1)

未经测试,但这样的事情可能会对您有所帮助:

   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

答案 1 :(得分:1)

您可以使用UPDATE FROM语句:

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 ...