我想對結果集中的行進行編號。我想一些方法可以讓我有一個結果集的3條使用一些SQL關鍵字生成會讀爲1,2,3的記錄表列...sql結果集記錄編號?
我知道我可以做一個臨時表一個自動增量列,但我想知道是否有一種方法,我可以從SQL查詢返回這個方法?
SELECT row_count,
project_name,
project_id
FROM Project
任何可用的類似 「ROW_COUNT」 我在做夢嗎?
我想對結果集中的行進行編號。我想一些方法可以讓我有一個結果集的3條使用一些SQL關鍵字生成會讀爲1,2,3的記錄表列...sql結果集記錄編號?
我知道我可以做一個臨時表一個自動增量列,但我想知道是否有一種方法,我可以從SQL查詢返回這個方法?
SELECT row_count,
project_name,
project_id
FROM Project
任何可用的類似 「ROW_COUNT」 我在做夢嗎?
聽起來像你想ROW_NUMBER,一個analytic/ranking function。但目前還不清楚要立足於編號是什麼 - 這個假設project_id
,始於最小值:
SELECT ROW_NUMBER() OVER(ORDER BY p.project_id) AS row_count,
p.project_name,
p.project_id
FROM PROJECT p
排序方式SELECT 0
會給你一個遞增列,並保存潛在不必要的排序。
SELECT ROW_NUMBER() over (order by (select 0)) as row_count,
project_name,
project_id
FROM Project
+1:那麼在使用'SELECT 0'時,ROW_NUMBER值的順序是什麼?它不是任意的/隨機的,對吧? – 2010-10-21 16:18:52
@OMG - 在執行計劃段迭代之前,計算標量操作者只傳遞在取值爲0作爲SegmentColumn而不是特定列值。但是段迭代器要求它的輸入由SegmentColumn排序,所以使用常量可以跳過排序步驟。 (或給它自由選擇不同的訪問路徑,例如排序在不同列上的覆蓋非聚簇索引) – 2010-10-21 16:25:19
那麼這個數字將基於記錄插入順序? – 2010-10-21 16:27:57
ui希望它從1開始,並在select的數據集中的每一行增加1。 – kacalapy 2010-10-21 16:13:43
@kacalapy:這就是ROW_NUMBER所做的事情,但您可以具體說明該編號的基礎。 – 2010-10-21 16:15:23