我正在尝试使用另一个表中的记录更新表。每当我使用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
答案 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的运行方式一致。您应该考虑在插入时添加时间戳以标识最新的行。