2016-04-11 180 views
-1

我需要一些幫助來編寫查詢。SQL更新循環查詢

我有一種情況,我在數據庫表中有近400000條記錄。

我必須一次選擇4000000行,對於每1000條記錄,我必須用循環中的數值更新列。

但是,該數值必須每1000行增加1。

所以舉例說明數值爲1的前1000行。然後是數值爲2的第1000行。對所有記錄重複該過程都有一個值。

謝謝。

+0

我正在嘗試使用row_number()函數。但是,每增加一行就會增加一個。 – lemondash

+0

sql server或mysql? –

+0

這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

回答

1

這裏是在黑暗中爲sql服務器的全面鏡頭。不知道這是否是正確的DBMS或您的任何列。但不管你是否需要爲這類事情使用循環。

with MyCTE as 
(
    select * 
     , ROW_NUMBER() over (order by Something) as RowNum 
    from MyTable 
) 

update MyCTE 
set SomeNumberColumn = (RowNum/1000) + 1 
+0

或者你可以;設置SomeNumberColumn = RowNum%1000 –

+0

@RicardoC不完全工作。他們希望1到999之間的所有值都是1.考慮第55行。55%1000 = 55.不是OP正在尋找什麼。 :) –

+0

你的回答對OP的狀態是嚴格的,是的。但我認爲這是不相關的,除非SELECT有意排序,否則它將是隨機的,因此我的建議。但是,是的,你是對的,不是說不然=) –