首頁 > 資料庫 > mysql教程 > 如何消除 SQL SELECT 陳述式中的重複電子郵件,同時保留其他欄位資料?

如何消除 SQL SELECT 陳述式中的重複電子郵件,同時保留其他欄位資料?

Barbara Streisand
發布: 2025-01-03 04:54:39
原創
264 人瀏覽過

How Can I Eliminate Duplicate Emails in a SQL SELECT Statement While Retaining Other Column Data?

在單列中使用DISTINCT 消除重複電子郵件

在從表中檢索多列的查詢中,可能需要根據特定列,同時保留其他列中的不同值。這可能具有挑戰性,因為 DISTINCT 和 GROUP BY 等傳統子句對整行進行操作。

為了滿足這項需求,可以使用 ROW_NUMBER() 函數。此函數為指定列定義的分割區內的每一行指派一個唯一的序號。透過將 ROW_NUMBER() 與 PARTITION BY 和 ORDER BY 子句結合,您可以根據所需列中的值建立每個分割區內的行排名。

考慮以下查詢:

SELECT ID, Email, ProductName, ProductModel
FROM Products
登入後複製

要修改此查詢以使其只返回唯一的電子郵件,我們可以使用以下命令代碼:

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) AS rn
    FROM Products
) AS a
WHERE rn = 1
登入後複製

ROW_NUMBER () 函數根據電子郵件列將結果劃分為多個分區,並為每一行在其分區內分配唯一的排名。隨後的 ORDER BY 子句確保每個分區中最後出現的行排在第一個。最後的 WHERE 子句過濾結果,僅包含排名為 1 的行,有效消除重複的電子郵件。

這種方法允許您指定任何列作為分區和排名的基礎,為定制查詢提供了靈活性根據您的具體要求。

以上是如何消除 SQL SELECT 陳述式中的重複電子郵件,同時保留其他欄位資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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