Sqlserver
 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 гарантирано е в правилния ред. На практика изглежда, че редовете ще бъдат вмъкнати по ред. Строго погледнато, редът на вмъкване не е гарантиран, въпреки че стойностите на идентификатора са подредени правилно.

Както бе споменато в коментара, можете също да направите:

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

Можете да направите това, защото масата е празна. Като първичен ключ данните трябва да се вмъкват в ред.

Като забележка обаче. Заявката:

select *
from new_table;

не гарантира подреждането на резултатите. Няма значение какъв е редът на вмъкване в таблицата. Не можете да разчитате на това, че резултатите са в определен ред само защото редовете са подредени по този начин. Например, в многонишкова среда, резултатите общо няма да е в ред на теория или на практика.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да сравните нулеви стойности от колоната на базата данни

  2. Функция на SQL Server ROUND():За какво е и защо трябва да ви е грижа?

  3. Естествено присъединяване в SQL Server

  4. Връщане на информация за колона от свързан сървър в SQL Server (T-SQL примери)

  5. Моментни снимки на базата данни на SQL Server -2