的結果如果任何人都可以,甚至只是幫助我詞組這個問題更好,我將不勝感激。SQL服務器 - 更新所有的記錄,每組,子查詢
我有一個SQL Server表,讓我們把它的汽車,其中包含約佔它們的主人,包括car_id,owner_accountNumber,owner_numCars項目和信息的條目。
我們正在使用的排序基於擁有的汽車數「所有者importantness」,並依賴於owner_numCars列這樣做的系統。如果合理可行,我寧願不調整這一點。
有沒有一種方法,我可以使用存儲過程更新每owner_accountNumber owner_numCars?也許一些其他更有效的方式,我可以完成每個owner_numCars包含每個owner_accountNumber的條目數?
現在我能想到做到這一點的唯一方法是(從C#應用程序):
SELECT owner_accountNumber, COUNT(*)
FROM mytable
GROUP BY owner_accountNumber;
,並通過查詢
UPDATE mytable
SET owner_numCars = <count result>
WHERE owner_accountNumber = <accountNumber result>
返回然後的foreach排但這似乎瘋狂與使服務器處理邏輯和更新相比效率低下。
編輯 - 感謝所有幫助。我知道這不是一個很好的建立數據庫,但這是我必須與之合作。我感謝大家的意見和建議。
您有一個有效的觀點,如果您想要維護數百萬條記錄並且緩存了非標準化值,那麼在插入/更新/刪除期間最好保持該值。並且有一個地方可以在存儲過程中進行。但是,在一次處理單個owner_accountNumber時,派生列與窗口函數的差異仍然不會很大。展開您的答案並展示如何編寫存儲過程。或者我通常不喜歡說這是一個觸發器。因爲SP除非使用自定義類型,否則不允許多行更改 – Matt
是的,我明白了你的觀點。我不會這樣設計它。我想到觸發器,但不想在這裏討論這個話題。 – LAS
同意我做幾乎所有可能的東西,遠離觸發器,尤其是在處理數百萬行時:) – Matt