sql >> データベース >  >> RDS >> Sqlserver

テーブルの行を昇順に並べ替え、テーブルを同時に保存する方法は?

    テーブルの行は 順序付けされていないため、行が順序付けられていることについて話すのは意味がありません。また、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;
      

    結果の順序を保証するものではありません。テーブルへの挿入順序に違いはありません。行がそのように順序付けられているという理由だけで、結果が特定の順序になっていることに依存することはできません。たとえば、マルチスレッド環境では、結果は 通常 理論的にも実践的にも、秩序を保ってください。



    1. DjangoでNorthwindを実装する方法

    2. codeigniterでのMYSQL複数挿入

    3. MySQLから呼び出されたHTMLテーブルの行を並べ替える方法

    4. ユーザーが私のコンテンツプロバイダーの特定のテーブルにのみアクセスできるようにする