【工作筆記0030】Sqlserver 遊標循環 select 的結果集數組,更新每條數據

-- 查詢時間段內的所有數據,並更新當天的評論數
DECLARE @startday datetime
DECLARE @endday datetime
-- SET @startday = convert(varchar(10),dateadd(dd,-2,getdate()),120) --前天
-- SET @endday = convert(varchar(10),dateadd(dd,-1,getdate()),120) --昨天

SET @startday = '2019-11-09'
SET @endday = '2019-12-01'

--申明遊標爲Uid
DECLARE @temp bigint
DECLARE ids CURSOR
FOR (SELECT Id FROM craw_product WITH(nolock) WHERE CreateTime > @startday AND CreateTime < @endday )
--打開遊標--
OPEN ids
--開始循環遊標變量--
FETCH NEXT FROM ids INTO @temp
--返回被 FETCH語句執行的最後遊標的狀態--
WHILE @@FETCH_STATUS = 0 
BEGIN
		UPDATE craw_product SET CommentCount = (
			SELECT COUNT(1) AS Total FROM craw_product_comment WITH(nolock)
			WHERE Pid = (SELECT TOP 1 Pid FROM craw_product WITH(nolock) WHERE Id = @temp)
			AND DATEDIFF(DAY, CommentTime, (SELECT TOP 1 CreateTime FROM craw_product WITH(nolock) WHERE Id = @temp)) = 0
		)		
		WHERE Id = @temp
		FETCH NEXT FROM ids INTO @temp --轉到下一個遊標
END   	
--關閉遊標
CLOSE ids
--釋放遊標
DEALLOCATE ids
	
	

 

發佈了39 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章