2010-05-02 104 views
1

我有4000條記錄,我需要挑選500條記錄。隨機幫助 - sql server 2008查詢

我需要500條記錄將插入到GoodTable

,其餘3500條記錄將插入到BadTable

如何做到這一點使用SQL服務器2008查詢?

感謝的提前

回答

4

這應該在Transact-SQL工作:

insert into GoodTable 
select top 500 * from OtherTable order by newid() 

編輯:這可能是更好的,它會自動爲你創建的GoodTable(而不是需要手動創建它預先用適當的列):

select top 500 * 
into GoodTable 
from OtherTable 
order by newid() 
+0

你確定這將是隨機的嗎?這取決於查詢引擎如何提取TOP行?例如。它可能每次讀取相同的500行,並且因爲隨機排序順序而重新排序?要完全確定選擇是隨機的,使用子查詢爲基表中的所有行分配一個newid並不明智,然後從那裏選擇前500個? – mdma 2010-05-02 14:21:32

+1

這就是newid()的順序 - 它在排序後選擇前500個*,這是通過爲每行隨機生成的'newid'完成的。我在SQL Server 2008上自己使用它,工作正常。簡單的方法來檢查:'select top 1 * ... by newid()'應該每次都得到不同的行。 – tzaman 2010-05-02 14:25:34