在使用SQL insert into语句创建新表时,是否可以在创建表之前对数据进行重新排序?

时间:2017-05-04 18:16:05

标签: sql sql-server ssms ssms-2014

例如,我有

Select ID, Name, Place
Into ##Temp_Table
From Table1

Select ID from ##Temp_Table

这将大致按顺序返回一个ID列表

2,35,47,23,1,15 ......你明白了。如果我添加Order By ID,那么我会按正确的升序排列。

有没有办法在插入语句之前使它们正确排序,以便在我

Select ID from ##Temp_Table

我得到ID的升序?

如果我尝试

Select ID, Name, Place
Into ##Temp_Table
From Table1
Order By ID

Select ID from ##Temp_Table

我仍然混乱不堪。

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,除非指定order by,否则永远不会保证结果的顺序。

其次,如果您在Id上创建一个唯一的聚集索引,您可能会得到您想要的。

Select ID, Name, Place
Into ##Temp_Table
From Table1

create unique clustered index uix_##temp_table on ##temp_table (id)

Select ID from ##Temp_Table

有关详情,请参阅Marc_S的回答:https://codepen.io/jmachado/pen/ybzNzr