1
我有一個帶有兩個字段的表格:作爲主鍵的ID字段(FID
)和Qty
都是整數。我需要查詢該表,並使用數量字段,以便我能得到這樣的結果增加兩個字段順序串行:1添加序列記錄號
table1
-------------------------------------
ID Qty range_begin range_end
50 2 1 2
53 1 3 3
65 3 4 6
67 2 7 8
range_begin
場開始,下一個記錄應該是range_end + 1
。 而range_end = last range_end + Qty
我嘗試使用上下文變量,如本
寫它,我將所有的變量設置爲null第一
rdb$set_context('USER_TRANSACTION', 'range_end', null);
rdb$set_context('USER_TRANSACTION', 'range_begin', null);
比我開始查詢:
Select
rdb$get_context('USER_TRANSACTION', 'range_begin'),
rdb$set_context('USER_TRANSACTION', 'range_begin', COALESCE(CAST(rdb$get_context('USER_TRANSACTION', 'range_end') AS INTEGER), 0) + 1)),
rdb$get_context('USER_TRANSACTION', 'range_end'),
rdb$set_context('USER_TRANSACTION', 'range_end', COALESCE(CAST(rdb$get_context('USER_TRANSACTION', 'range_end') AS INTEGER), 0) + Qty)),
Qty
from table1 where ...
但我無法獲得正確的序列。我也嘗試添加更多的變量和其他東西,但沒有爲我工作,所以這應該如何做,所以我可以使用單選查詢?
我正在使用FireBird 2.5,並且它不需要使用上下文變量的答案。
此表有超過1M個記錄,但在此查詢中,where子句僅返回100條記錄,因此我將使用您的解決方案。謝謝。 – Wel
我想請問,如果'ID'字段重複我覺得'range_begin'不是從1開始,所以有沒有解決方法呢? – Wel
嗯,現在還沒有脫離我的頭頂......你有沒有在桌子上可以使用一些PK而不是「ID」? – ain