Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak ułożyć rzędy tabeli w kolejności rosnącej i jednocześnie zapisywać tabelę?

Wiersze w tabeli nieuporządkowane, więc nie ma sensu mówić o uporządkowaniu wierszy. Ponadto zestaw wyników z zapytania jest nieuporządkowany, chyba że użyjesz order by klauzula.

To powiedziawszy, możesz mieć ten sam efekt, umieszczając wiersze w tabeli w uporządkowany sposób. Oto metoda.

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;

Kolumna id gwarantuje prawidłową kolejność. W praktyce wydaje się, że wiersze będą wstawiane po kolei. Ściśle mówiąc, kolejność wstawiania nie jest gwarantowana, chociaż wartości identyfikatora są uporządkowane poprawnie.

Jak wspomniano w komentarzu, możesz również wykonać:

alter table new_table add new_table_id int identity(1, 1) not null primary key;

Możesz to zrobić, ponieważ tabela jest pusta. Jako klucz podstawowy dane powinny być wstawiane w kolejności.

Jednak jako uwaga. Zapytanie:

select *
from new_table;

nie gwarantuje uporządkowania wyników. Nie ma znaczenia, jaka jest kolejność wstawiania w tabeli. Nie można polegać na tym, że wyniki będą ułożone w określonej kolejności tylko dlatego, że wiersze zostały ułożone w ten sposób. Na przykład w środowisku wielowątkowym wyniki ogólnie nie będą być w porządku, czy to w teorii, czy w praktyce.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zidentyfikować pierwszą lukę w wielu zakresach dat rozpoczęcia i zakończenia dla każdego odrębnego elementu w T-SQL?

  2. Jak zaimportować arkusz kalkulacyjny programu Excel do programu SQL Server?

  3. Metoda xquery value() nie działa i daje błąd

  4. Najlepszy sposób na uzyskanie tożsamości wstawionego wiersza w połączonym serwerze?

  5. Wyniki SSMS do siatki - CRLF nie zachowane w kopiowaniu/wklejaniu - jakieś lepsze techniki?