oracle 去除重复记录的方法有:distinct:移除所有列值相同的重复行。group by:将相同值的行分组,仅返回一个代表行。row_number():为每一行分配唯一整数,用于标识并删除重复行。还可以添加条件,仅移除符合特定条件的重复行,如 salary 值大于 5000。
oracle去除重复记录的方法及添加条件
Oracle提供了几种方法来去除重复记录,包括 DISTINCT、GROUP BY 和 ROW_NUMBER()。
使用 DISTINCT
DISTINCT 运算符可从结果集中移除重复的行。它将根据所有列的值来判断重复性。
SELECT DISTINCT column1, column2
FROM table_name;
使用 GROUP BY
GROUP BY 运算符将具有相同值的行分组,并仅返回每个组中的一个代表行。
SELECT column1, column2
FROM table_name
GROUP BY column1, column2;
使用 ROW_NUMBER()
ROW_NUMBER() 函数为表中的每一行分配一个唯一的整数。我们可以使用该值来标识重复的行并将其删除。
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;
添加条件
可以在上述方法中添加条件,以仅移除符合特定条件的重复行。例如,以下查询使用 DISTINCT 来移除 salary 列值大于 5000 的重复行:
SELECT DISTINCT column1, column2
FROM table_name
WHERE salary > 5000;
同样,我们可以使用 GROUP BY 和 HAVING 子句来移除满足特定条件的重复组:
SELECT column1, column2
FROM table_name
GROUP BY column1, column2
HAVING COUNT(*) > 1 AND SUM(salary) > 10000;
以上就是oracle去重如何加条件的详细内容.