2017-05-04 204 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