我正在看一些代碼,遇到了一些對我而言很陌生的東西;谷歌沒有證明成果豐碩,所以我想知道是否有人可以解釋下面的代碼是做什麼的?它不涉及我的任何表或數據庫,所以我認爲它是通用代碼,我不需要提供我的數據庫佈局?非常感謝。這個SELECT語句做什麼?
的代碼:
SELECT ROW_NUMBER() OVER (ORDER BY Object_ID) AS weeks
FROM SYS.OBJECTS
我正在看一些代碼,遇到了一些對我而言很陌生的東西;谷歌沒有證明成果豐碩,所以我想知道是否有人可以解釋下面的代碼是做什麼的?它不涉及我的任何表或數據庫,所以我認爲它是通用代碼,我不需要提供我的數據庫佈局?非常感謝。這個SELECT語句做什麼?
的代碼:
SELECT ROW_NUMBER() OVER (ORDER BY Object_ID) AS weeks
FROM SYS.OBJECTS
它將選擇1到N的數字,其中N是在sys.objects中的行數。它不保證排序。
也許這個代碼旨在提供所有星期數(omg!),假設sys.objects中至少有52行。
但是,該代碼將返回超過52行,並且結果不保證是有序的。我建議你擺脫這種混亂。
編輯:作爲替代,我會選擇創建下表:CREATE TABLE Weeks (WeekNumber TINYINT NOT NULL PrimaryKey)
並適當填充它。這將比從sys.objects中選擇更快,因爲這個定製表將會更小並且正確排序。
開發人員使用系統表sysobjects
中的記錄,通過使用ROW_NUMBER()
窗口函數並將列別名爲「Weeks」來獲取序列號列表。 sys.objects
視圖中的行數將根據定義到數據庫的對象而變化,所以爲什麼有人會這樣做超出我的範圍...
如果需要一個簡單的序列號列表,那麼有更多可預測的方法來獲取他們。
非常感謝您的回覆。你能否提出一個代碼片段可以做到這一點,但你可以在哪裏設置行數? – 2012-03-17 15:02:21
我已經添加了我的選擇。作爲獎勵,您可以使用此表來存儲每週數據。 – usr 2012-03-17 15:04:28
謝謝你的迴應! :) – 2012-03-17 15:07:25