注册

oracle去重如何加条件

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去重如何加条件的详细内容,更多请关注CTO智库其它相关文章!