首頁 >資料庫 >mysql教程 >如何使用 DENSE_RANK() 取得 SQL 中不同值的行號?

如何使用 DENSE_RANK() 取得 SQL 中不同值的行號?

Patricia Arquette
Patricia Arquette原創
2024-12-29 03:08:09201瀏覽

How to Get Row Numbers for Distinct Values in SQL Using DENSE_RANK()?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn