狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL中的三種去重方式:DISTINCT,GROUP BY與ROW_NUMBER()

admin
2024年2月19日 15:16 本文熱度 653
在日常使用SQL統計數據過程中,我們往往會遇到重復數據的情況,如果不進行去重處理了話,那么我們統計的數據偏差會比較大。那使用SQL如何對數據進行去重呢?

今天介紹三種去重方式。

1.使用DISTINCT關鍵字

這是SQL中最常用的去重方式。DISTINCT 關鍵字用于返回唯一不同的值。在一個SELECT語句中,你可以使用 DISTINCT 關鍵字。例如:

  • SELECT DISTINCT column_name FROM table_name;

這條語句會返回table_name中所有不同的column_name值。

2.使用GROUP BY語句

GROUP BY語句用于結合聚合函數,根據一個或多個列對結果集進行分組。在GROUP BY查詢中,如果對所有列都進行分組,那么它的結果就等同于使用了DISTINCT關鍵字。例如:

SELECT column_name FROM table_name GROUP BY column_name;

這個查詢會返回table_name中所有不同的column_name值。

3.使用 ROW_NUMBER() 函數

ROW_NUMBER() 是一個窗口函數,為每個分組中的每行分配唯一的行號,它可以用來刪除重復行。例如:

WITH CTE AS (SELECT column_name, ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY ( SELECT 0)) RN FROM table_name) SELECT column_name FROM CTE WHERE RN = 1;

這個查詢將返回table_name中所有不同的column_name值。

在此查詢中,使用 ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY (SELECT 0)) 可以為每個 column_name 分組中的每一行分配一個唯一的行號,但這個行號的分配并不依賴于任何特定的排序。這樣,你可以選擇每個 column_name 分組中的任意一行,因此 WHERE RN = 1 可以選擇每個分組的第一行。

如果你不關心選擇哪一行,或者如果表中的所有行對于每個 column_name 都是唯一的,那么這樣做是可以的。如果你希望基于某種特定的排序來選擇行(例如,選擇每個分組中最新或最舊的行),那么你需要使用一個真正的排序表達式,而不是 SELECT 0。

比如說,表table_name中有兩列,一列是column_name,一列是create_time,因為每個column_name下可能有重復數據,且create_time可能不一樣,我們去重的規則是取最近一條column_name的數據,那么去重的SQL如下,將(SELECT 0) 替換成create_time desc:

WITH CTE AS (SELECT column_name, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY create_time DESC) RN FROM table_name) SELECT column_name FROM CTE WHERE RN = 1;


簡單總結下今天分享的內容。

今天主要分享了SQL中的3種去重方式:使用 DISTINCT 關鍵字,GROUP BY語句,和 ROW_NUMBER() 函數。

在實際使用時,可以根據具體的需求和數據情況選擇合適的方法。希望本文對您有所幫助。


該文章在 2024/2/19 15:16:16 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved