我有一個簡單的表中選擇多行帶有「版本」方案:由Max
Version | PartKey1 | PartKey2 | Value
1 | 0 | 0 | foo
2 | 0 | 0 | bar
1 | 1 | 0 | foobar
此表中(約100萬行的完整版)。在開始時它會加載一個包含完整快照的版本1,隨着時間的推移會增加更新,但我們希望保留舊版本,因此它們會添加一個遞增的「版本」編號(此處爲2)。
讀取數據時,我希望能夠指定一個最大的版本,我想,如果可能的話,只檢索「行」我感興趣的
例如:指定2爲最高版本,我想在上面的表中檢索只有2行的查詢:
Version | PartKey1 | PartKey2 | Value
2 | 0 | 0 | bar
1 | 1 | 0 | foobar
行:
1 | 0 | 0 | foo
被丟棄,因爲該版本2
這一行是是最近的。
我想知道如果這樣的選擇是可能/建議在SQL查詢。我可以在應用程序端進行過濾,但顯然這意味着從數據庫中抽取無用的資源,所以如果可能的話(在數據庫方面便宜),我寧願將這項工作卸載到數據庫。
爲什麼過濾條件在子查詢(CTE)的WHERE子句中? –
@Jonathan:OP說:「在讀取數據時,我希望能夠指定最大版本。」* WHERE條款是一個如何去做的例子。 – RedFilter
因爲確切的問題涉及指定版本號上限的功能。 (給出的例子是2)。 – MatBailie