Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để sắp xếp các hàng của một bảng theo thứ tự tăng dần và để lưu bảng đồng thời?

Các hàng trong bảng 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ế.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thoát một chuỗi trong SQL Server để an toàn khi sử dụng trong biểu thức LIKE

  2. SQL Server (TSQL) - Có thể thực thi các câu lệnh song song không?

  3. Làm cách nào để tạo bản tóm tắt bằng cách tham gia vào một bảng duy nhất với SQL Server?

  4. Bật lại SSMS Addin

  5. Làm cách nào để chuyển đổi hàm chia thành bảng nội tuyến udf có giá trị trong máy chủ SQL?