我正在使用Sql Server!如何從條件的sql server中獲取數據?
我的問題是:我的客戶表中有15000條記錄,我想在一天內處理前5000條記錄,第二天我每天處理下5000條記錄。每天的操作都是在有限的記錄中執行,客戶表的數據經常變化。還可以獲取未處理的待處理記錄的數量。請給你有用的建議如何做到這一點。感謝
更多細節:使用
- 日期時間戳在表
- 字段:[FIRST_NAME],[middle_name],[姓氏],[創建],[CREATED_BY],[CUSTOMER_NUMBER]
我正在使用Sql Server!如何從條件的sql server中獲取數據?
我的問題是:我的客戶表中有15000條記錄,我想在一天內處理前5000條記錄,第二天我每天處理下5000條記錄。每天的操作都是在有限的記錄中執行,客戶表的數據經常變化。還可以獲取未處理的待處理記錄的數量。請給你有用的建議如何做到這一點。感謝
更多細節:使用
最簡單的方法可以是通過添加兩列(如果不存在)。 updated_at
和processed_at
。 updated_at
列將更新行更新。當您在日常工作中開始處理該行時,將會更新processed_at
列。現在你的查詢會是這樣的。
select * from your_table where updated_at > processed_at limit 5000;
我會假設你有某種形式的ID在你的表...
所以你設置你的程序的開始日期,並比較這(我用「2016- 01-01'):
with CTE as
(
select t1.*, row_number() over(order by customer_id) as r_ord
from Mytable t1
)
select CTE.*
from CTE
where (mod(datediff(day, '2016-01-01', getdate()),3) = 0 and r_ord <= 5000)
or (mod(datediff(day, '2016-01-01', getdate()),3) = 1 and r_ord between 5001 and 10000)
or (mod(datediff(day, '2016-01-01', getdate()),3) = 2 and r_ord > 10000)
你可以發表表的模式嗎?如果行已被處理,您是否可以建議您是否保留日期時間戳記?如果您的操作非常簡單,那麼從DataTable中選擇top 5000 *,其中datetimeprocessed爲空orderCodeCol ASC –
客戶表更改如何影響您的日常處理? –
,[FIRST_NAME] ,[middle_name] ,[姓氏] ,[創建] ,[CREATED_BY] ,[CUSTOMER_NUMBER] –