SQL更新来自另一组行的行

时间:2014-03-28 01:38:32

标签: sql sql-server sql-server-2008

我已经得到了以下SQL查询:

UPDATE t1
SET t1.selected_team_id = t2.selected_team_id, t1.source_id = t2.source_id
FROM Tip t1, (SELECT * FROM Tip WHERE tip_id = 19494067) t2 -- To
WHERE t1.tip_id = 27471255 -- From

这允许我复制tip_id 19494067并更新tip_id 27471255上的selected_team_id和source_id

现在我希望能够复制多行,从19494067 - 19494073到27471255 - 27471261可以说6行

我试过了WHERE IN,但这似乎只复制了第一行(19494067),用于27471255中的所有行 - 27471261

有一个好方法可以通过一次通话批量执行此操作吗?

1 个答案:

答案 0 :(得分:1)

如果行相邻,则可以执行此操作。类似的东西:

UPDATE tot
    SET selected_team_id = fromt.selected_team_id,
        source_id = fromt.source_id
FROM Tip tot join
     Tip fromt
     on fromt.tip_id - 19494067 = tot.tip_id - 27471255
WHERE tot.tip_id between 27471255 and 27471261;