我遇到了一个问题,我需要将数据插入到另一个表中,但是我插入2列的方式,然后保持在同一行,插入下一个2,依此类推。
我有以下表格数据
我有一个包含2列的表,我想填写,但希望输入数据,如:
Row 1:(Row1A,Row1B)
Row 2:(Row1C,Row1D)
Row 3:(Row1E,Row1D)
Row 4:(Row2A,Row2B)
Row 5:(Row2C,Row2D)
Row 6:(Row2E,Row2F)
我可以使用循环实现上述功能,但我想知道另一种可以提高性能的方法。有没有办法实现这个目标?
编辑:订单需要正确。在移到第二行之前,我需要先将第一行列添加到表中。
答案 0 :(得分:1)
我会使用apply
:
insert into t2(col1, col2)
select col1, col2
from data d cross apply
(values (varchar1, varchar2), (varchar3, varchar4), (varchar5, varchar6)
) v(col1, col2);
表表示无序集。因为您只有两列,所以没有用于指定排序的列。如果您这样做,那么order by
将允许您拥有捕获订购的identity
列。这看起来像是:
insert into t2(col1, col2)
select col1, col2
from data d cross apply
(values (varchar1, varchar2, 1), (varchar3, varchar4, 2), (varchar5, varchar6, 3)
) v(col1, col2, priority)
order by d.id, v.priority;