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' の値を持っているなど、データが正しい順序で挿入されませんでした。
何故ですか?スクリプトはどのように実行されましたか?