oracle 提供多種去重查詢方法:distinct 關鍵字返回每列的唯一值。group by 子句對結果分組并返回每個分組的非重復值。unique 關鍵字用于創建僅包含唯一行的索引,查詢該索引將自動去重。row_number() 函數分配唯一數字并過濾出僅包含第 1 行的結果。min() 或 max() 函數可返回數字列的非重復值。intersect 運算符返回兩個結果集的公共值(無重復項)。
Oracle 去重查詢
Oracle 提供了多種方法來執行去重查詢,即從結果集中刪除重復值。
1. DISTINCT 關鍵字
DISTINCT 關鍵字是最簡單的去重方法。它用于返回結果集中每列的唯一值。
SELECT DISTINCT column_name FROM table_name;
登錄后復制
2. GROUP BY 子句
GROUP BY 子句將結果集分組,并僅返回每個分組的非重復值。
SELECT column_name FROM table_name GROUP BY column_name;
登錄后復制
3. UNIQUE 關鍵字
UNIQUE 關鍵字可用于創建索引,該索引僅包含表的唯一行。查詢此類索引將自動去重。
CREATE UNIQUE INDEX index_name ON table_name (column_name);
登錄后復制
4. ROW_NUMBER() 函數
ROW_NUMBER() 函數為結果集中的每一行分配一個唯一的數字。然后,可以使用它來過濾出僅包含第 1 行的去重復結果。
SELECT column_name FROM ( SELECT column_name, ROW_NUMBER() OVER (ORDER BY column_name) AS row_num FROM table_name ) AS subquery WHERE row_num = 1;
登錄后復制
5. MIN() 或 MAX() 函數
對于數字列,可以使用 MIN() 或 MAX() 函數來返回非重復值。
SELECT MIN(column_name) FROM table_name;
登錄后復制
SELECT MAX(column_name) FROM table_name;
登錄后復制
6. INTERSECT 運算符
INTERSECT 運算符將兩個結果集相交,僅返回它們的公共值(即沒有重復值)。
SELECT column_name FROM table_name INTERSECT SELECT column_name FROM table_name2;
登錄后復制