我有一个典型的非规范化表 ( tempTable
),其中包含多个编号的列 ( rep1
, rep2
,...)。所以我写了一个脚本来将非规范化的数据插入到一个规范化的表中(myTable
):
insert into myTable
select idRep,rep FROM
(
select idRep, ISNULL(rep1,'') as rep FROM tempTable
union
select idRep, ISNULL(rep2,'') as rep FROM tempTable
union
select idRep, ISNULL(rep3,'') as rep FROM tempTable
union
select idRep, ISNULL(rep4,'') as rep FROM tempTable
union
select idRep, ISNULL(rep5,'') as rep FROM tempTable
) as t
注意:该表myTable
还包含一个自动递增的IDENTITY
列作为其PRIMARY KEY
.
在我的场景中,rep1、rep2、rep3、rep4、rep5 的顺序很重要。奇怪的是,当我执行脚本时,数据没有以正确的顺序插入,例如自动生成的 id '1000' 的值来自 'rep3' 而 id '1001' 的值来自 'rep1'。
这是为什么?脚本是如何执行的?