从Record One SQL Server开始更新表

时间:2015-05-20 15:15:07

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

我正在尝试使用另一个表中的记录更新表。每当我使用insert into语句时,我发现只是附加了记录。相反,我希望从表的顶部插入记录。最简单的方法是什么?我很瘦,我可以使用更新语句,但这意味着我必须加入表格。其中一个表(我从中提取记录的表)只有一列。因此,我将不得不包括另一列来进行连接。我试图不要让它变得如此复杂。如果有更简单的方法,请告诉我。

样品:

Table One
Col1
1
2
3
4

Table 2
Col1  Col2
a
b
c
d

我想将第1列从表1移到表2中的第2列,以便表2将是:

Table 2
Col1  Col2
a      1
b      2
c      3
d      4

2 个答案:

答案 0 :(得分:1)

您可以使用row_number()进行更新,但这些行将以 indeterminate 顺序分配:

with toupdate as (
      select t2.*, row_number() over (select NULL)) as seqnum
      from table2 t2
     ),
     t1 as (
      select t1.*, row_numbrer() over (select NULL)) as seqnum
      from table1 t1
     )
update toupdate
    set col2 = t1.col1
    from toupdate join
         t1
         on toupdate.seqnum = t1.seqnum;

注意:如果您有一个排序,请在分区子句中使用相应的order by

答案 1 :(得分:0)

除非您明确ORDER BY语句中定义SELECT子句,否则您的结果集将完全是任意的。这与任何RDBMS的运行方式一致。您应该考虑在插入时添加时间戳以标识最新的行。