oracle 去重
在Oracle中,去重通常使用DISTINCT
关键字实现。如果你想要从一张表中选择不重复的记录,可以这样做:
SELECT DISTINCT column_name1, column_name2, ...
FROM your_table_name;
如果你想要基于某些列去除重复,但同时保留其他列信息,可以这样写:
SELECT column_name1, column_name2, ...
FROM your_table_name
GROUP BY column_name1, column_name2, ...;
这里的GROUP BY
会将结果集按照指定的列进行分组,并且只显示每个分组的一条记录。
如果你需要去重并且只保留唯一记录的一条,可以使用ROW_NUMBER()
窗口函数结合PARTITION BY
子句:
SELECT *
FROM (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY column_name) AS rn
FROM your_table_name t
)
WHERE rn = 1;
这里的PARTITION BY
会指定哪些列的值相同的记录会被划分到同一个分组中,而ORDER BY
则决定了在分组内记录的排序,rn
为每条记录在其分组内的序号。最外层的查询则选择了每个分组中序号为1的记录,即去重后的记录。
评论已关闭