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

SELECT * INTO は、SQL Server 2008 では ORDER BY を保持しますが、2012 では保持しません

    select * from #result を使用して、テーブル内の順序を確認するにはどうすればよいですか? ? select の順序について保証はありません

    ただし、SQL Fiddle では結果が異なります。結果が同じであることを保証したい場合は、主キーを追加します。次に、挿入順序が保証されます:

    CREATE TABLE MyTable(Name VARCHAR(50), SortOrder INT)
    INSERT INTO MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4
    
    
    select top 0 * into result from MyTable;
    
    alter table Result add id int identity(1, 1) primary key;
    
    insert into Result(name, sortorder)
        SELECT * FROM MyTable
        ORDER BY SortOrder;
    

    私はまだ select * from Result をするのが嫌いです この後。しかし、はい、SQL Server 2008 と 2012 の両方で正しい順序でそれらを返します。それだけでなく、SQL Server は主キーが適切な順序で挿入されることを保証するため、レコードは正しい順序であることが保証されます。この場合。

    しかし 。 . .レコードがページ上で特定の順序になっているからといって、 order by なしでその順序で取得されるわけではありません



    1. より高速なデータベースのためのSQLVARCHARデータ型の推奨事項と禁止事項

    2. 投稿データを使用してセッションを設定する

    3. 別のスクリプトでデータベース接続を参照するPython

    4. dtexecを使用したSSISパッケージの実行