首頁 > 資料庫 > mysql教程 > DISTINCT 如何與 ROW_NUMBER() 互動以及如何在 SQL 中取得唯一行號?

DISTINCT 如何與 ROW_NUMBER() 互動以及如何在 SQL 中取得唯一行號?

Patricia Arquette
發布: 2024-12-26 03:13:09
原創
429 人瀏覽過

How Does DISTINCT Interact with ROW_NUMBER() and How Can I Get Unique Row Numbers in SQL?

了解DISTINCT 關鍵字和ROW_NUMBER() 函數

在SQL 中處理資料時,通常需要只擷取唯一行從一張桌子上。 DISTINCT 關鍵字通常用於此目的,因為它會從結果集中消除重複行。但是,當與 ROW_NUMBER() 函數結合使用時,DISTINCT 關鍵字的行為可能會有所不同。

ROW_NUMBER() 函數和不同值

ROW_NUMBER() 函數分配一個表中每一行的唯一序號。預設情況下,行會按其在表中的位置排序。但是,您可以使用 ORDER BY 子句指定不同的排序順序。

在提供的查詢中,ROW_NUMBER() 函數與 DISTINCT 關鍵字一起使用:

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64
登入後複製

此查詢的目標顯示 id 列中唯一值的所有行號。但是,它只會傳回不同的值,而不顯示行號。

使用 DENSE_RANK() 函數的解

要獲得所需的結果,您可以使用 DENSE_RANK( ) 函數而不是 ROW_NUMBER()。 DENSE_RANK() 函數為表中的每個不同值分配唯一的序號,而不管行的順序如何。

使用 DENSE_RANK() 的更正查詢:

SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64
登入後複製

此查詢將傳回 id 列中的不同值及其對應的行號,滿足原始要求。

以上是DISTINCT 如何與 ROW_NUMBER() 互動以及如何在 SQL 中取得唯一行號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板