在SQL 中使用Row_Number 區分不同值的行
SQL 中的DISTINCT 關鍵字在擷取資料時消除重複行方面著至關重要的作用。但是,當您需要識別列中每個值的唯一出現次數時,這可能還不夠。這就是 Row_Number 發揮作用的地方,但它與 DISTINCT 的組合可能很棘手。
相關查詢嘗試顯示 id 欄位中不同值的行號:
SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
但是,此查詢會產生 id 的不同值,而不是每個唯一值的行號。為了達到所需的結果,您可以使用DENSE_RANK() 函數而不是DISTINCT:
SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
DENSE_RANK() 將連續的行號分配給不同的值,這與ROW_NUMBER() 不同,後者將間隙分配給重複的值。透過將 DENSE_RANK() 與 DISTINCT 結合,您可以檢索每個唯一 id 值的行號,為進一步分析或處理提供必要的資訊。
以上是如何使用 DENSE_RANK() 取得 SQL 中不同值的行號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!