oracle 去除重復(fù)記錄的方法有:distinct:移除所有列值相同的重復(fù)行。group by:將相同值的行分組,僅返回一個(gè)代表行。row_number():為每一行分配唯一整數(shù),用于標(biāo)識(shí)并刪除重復(fù)行。還可以添加條件,僅移除符合特定條件的重復(fù)行,如 salary 值大于 5000。
oracle去除重復(fù)記錄的方法及添加條件
Oracle提供了幾種方法來(lái)去除重復(fù)記錄,包括 DISTINCT、GROUP BY 和 ROW_NUMBER()。
使用 DISTINCT
DISTINCT 運(yùn)算符可從結(jié)果集中移除重復(fù)的行。它將根據(jù)所有列的值來(lái)判斷重復(fù)性。
SELECT DISTINCT column1, column2 FROM table_name;
登錄后復(fù)制
使用 GROUP BY
GROUP BY 運(yùn)算符將具有相同值的行分組,并僅返回每個(gè)組中的一個(gè)代表行。
SELECT column1, column2 FROM table_name GROUP BY column1, column2;
登錄后復(fù)制
使用 ROW_NUMBER()
ROW_NUMBER() 函數(shù)為表中的每一行分配一個(gè)唯一的整數(shù)。我們可以使用該值來(lái)標(biāo)識(shí)重復(fù)的行并將其刪除。
WITH CTE AS ( SELECT column1, column2, ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS row_num FROM table_name ) SELECT column1, column2 FROM CTE WHERE row_num = 1;
登錄后復(fù)制
添加條件
可以在上述方法中添加條件,以僅移除符合特定條件的重復(fù)行。例如,以下查詢使用 DISTINCT 來(lái)移除 salary 列值大于 5000 的重復(fù)行:
SELECT DISTINCT column1, column2 FROM table_name WHERE salary > 5000;
登錄后復(fù)制
同樣,我們可以使用 GROUP BY 和 HAVING 子句來(lái)移除滿足特定條件的重復(fù)組:
SELECT column1, column2 FROM table_name GROUP BY column1, column2 HAVING COUNT(*) > 1 AND SUM(salary) > 10000;
登錄后復(fù)制