Rader i en tabell är oordning, så det är inte meningsfullt att tala om att rader är i ordning. Och resultatuppsättningen från en fråga är oordnad, såvida du inte använder en order by
klausul.
Som sagt, du kan ha samma effekt av att placera rader i en tabell på ett ordnat sätt. Här är en metod.
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-kolumnen är garanterat i rätt ordning. I praktiken verkar det som att raderna kommer att läggas in i ordning. Strängt taget är infogningsordningen inte garanterad även om värdena för id:t är korrekt ordnade.
Som nämnts i kommentaren kan du också göra:
alter table new_table add new_table_id int identity(1, 1) not null primary key;
Du kan göra detta eftersom tabellen är tom. Som primärnyckel ska data infogas i ordning.
Men som en notis. Frågan:
select *
from new_table;
garanterar inte ordningen av resultaten. Det spelar ingen roll vilken insättningsordning som är i tabellen. Du kan inte lita på att resultaten är i en viss ordning bara för att raderna ordnades på det sättet. Till exempel, i en miljö med flera trådar, kommer resultaten i allmänhet inte vara i ordning, antingen i teorin eller i praktiken.