テーブルの行は 順序付けされていないため、行が順序付けられていることについて話すのは意味がありません。また、order by
を使用しない限り、クエリの結果セットは順不同です。
とはいえ、行を順番どおりにテーブルに配置するのと同じ効果が得られます。ここにメソッドがあります。
select top 0 * into new_table from existing_table; alter table new_table add new_table_id int identity(1, 1); insert into new_table(<list of columns without new_table_id>) SELECT <list of columns without new_table_id> INTO new_table FROM existing_table ORDER BY col1, col2;
プレ>id 列は正しい順序であることが保証されています。実際には、行は順番に挿入されるようです。厳密に言えば、id の値は正しく順序付けされていますが、挿入順序は保証されません。
コメントで述べたように、次のこともできます:
alter table new_table add new_table_id int identity(1, 1) not null primary key;
プレ>テーブルが空なので、これを行うことができます。主キーとして、データを順番に挿入する必要があります。
注意点ですが。クエリ:
select * from new_table;
プレ>結果の順序を保証するものではありません。テーブルへの挿入順序に違いはありません。行がそのように順序付けられているという理由だけで、結果が特定の順序になっていることに依存することはできません。たとえば、マルチスレッド環境では、結果は 通常 理論的にも実践的にも、秩序を保ってください。