Các hàng trong bảng là không có thứ tự, vì vậy không có ý nghĩa gì khi nói về việc các hàng có thứ tự. Và, tập hợp kết quả từ một truy vấn không có thứ tự, trừ khi bạn sử dụng order by
mệnh đề.
Điều đó nói rằng, bạn có thể có tác dụng tương tự khi đặt các hàng vào một bảng theo cách có thứ tự. Đây là một phương pháp.
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;
Cột id được đảm bảo theo đúng thứ tự. Trong thực tế, có vẻ như các hàng sẽ được chèn theo thứ tự. Nói một cách chính xác, thứ tự chèn không được đảm bảo mặc dù các giá trị của id được sắp xếp chính xác.
Như đã đề cập trong nhận xét, bạn cũng có thể làm:
alter table new_table add new_table_id int identity(1, 1) not null primary key;
Bạn có thể làm điều này vì bảng trống. Là một khóa chính, dữ liệu phải được chèn theo thứ tự.
Như một lưu ý, mặc dù. Truy vấn:
select *
from new_table;
không đảm bảo thứ tự của các kết quả. Không có gì khác biệt so với thứ tự chèn vào bảng. Bạn không thể phụ thuộc vào kết quả theo một thứ tự cụ thể chỉ vì các hàng được sắp xếp theo cách đó. Ví dụ:trong môi trường đa luồng, kết quả nói chung sẽ không theo thứ tự, trên lý thuyết hoặc trong thực tế.