2017-05-04 38 views
0

例如,我有使用SQL插入语句创建新表时,是否可以在创建表之前重新排序数据?

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

Select ID from ##Temp_Table 

这大致在没有秩序可言

2,35,47,23,1,15返回ID列表......你明白了吧。如果我添加Order By ID,然后按照正确的升序排列。

有没有一种方法,使他们正确排序INSERT INTO语句之前,所以,当我

Select ID from ##Temp_Table 

我得到的ID的升序?

如果我尝试

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

Select ID from ##Temp_Table 

我仍然得到一个混乱的烂摊子。

谢谢!

+1

在创建表后添加一个索引?如果你创建了一个集群主键,你可以在没有ORDER BY的情况下按照正确的顺序排列它们。但是,您还应该意识到,所有表都被视为无序集合,如果您确实需要订单,则永远不应该假设并始终明确地为ORDER BY。 – pmbAustin

+1

@pmbAustin与一个聚集的PK你*可能会*没有'ORDER BY'以正确的顺序获取记录,但它仍然不能保证。 – alroc

回答

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://stackoverflow.com/a/20050403/2333499

相关问题