create or replace procedure SP_STRIP_PK(
/*
去掉重复的记录(保证主键值唯一)
*/
p_table in varchar2, --物理表
partition_by in varchar2, --分区依据 PK字段
order_by in varchar2 --排序依据
) is
begin
EXECUTE IMMEDIATE(
'DELETE FROM '||p_table||'
WHERE rowid in (
SELECT rid
FROM (
select rowid rid,
row_number() over(partition by '||nvl(partition_by,1)||' order by '||order_by||') rn
from '||p_table||'
)
WHERE rn > 1
) ');
end SP_STRIP_PK;
MySQL版:
CREATE PROCEDURE `sp_strip_pk`(tb_name varchar(255), partition_by varchar(255), order_by varchar(255), rowid_field varchar(50))
MODIFIES SQL DATA
DETERMINISTIC
COMMENT '去掉重复的记录(保证主键值唯一) '
BEGIN
set @sql = concat(
'DELETE FROM ',tb_name,'
WHERE (', rowid_field ,') IN (
select ', rowid_field ,' from (
select t1.*
, if(@g1=t1.group1, @rank:=@rank+1, @rank:=1) as rank
, (@g1:=t1.group1) as g1
from
(select ', rowid_field ,', concat_ws(char(5), ', partition_by ,') as group1
from ',tb_name,'
order by ', partition_by ,' , ', order_by ,') t1
, (select @g1:=null, @rank:=0) t2
) t where rank > 1
)' );
prepare stm from @sql;
execute stm;
END
分享到:
相关推荐
### ORACLE去除重复数据方法 在数据库管理与维护过程中,数据重复问题是非常常见的现象,尤其在大型企业级应用中更是如此。重复数据不仅占用存储空间,还可能导致数据分析结果出现偏差,影响业务决策的准确性。因此...
以下将详细解释如何在Oracle中处理这两种类型的重复数据问题:部分字段重复和完全重复记录。 一、部分字段重复数据的删除 1. 查询重复数据: 使用`GROUP BY`和`HAVING`子句可以找出具有相同值的字段组合。例如,...
针对不同的场景,可以采取以下几种策略来删除重复记录: 1. **基于Group By和Min/Max Rowid** ```sql DELETE FROM cz WHERE (c1, c10, c20) IN (SELECT c1, c10, c20 FROM cz GROUP BY c1, c10, c20 HAVING COUNT...
在Oracle数据库中,存储过程是一种强大的工具,可以用于执行复杂的数据库操作,包括生成SQL代码。在上述场景中,我们看到一个名为`AA_GENDML`的存储过程被创建,其目的是自动化生成针对特定表的INSERT、SELECT、...
4. 查询与删除重复记录:在数据处理中,有时会出现重复的记录,这需要通过特定的SQL语句来处理。Oracle提供了`DISTINCT`关键字去除查询结果中的重复行,而在`删除重复记录sql.txt`中,你可能看到如何使用`GROUP BY`...
5. DISTINCT和UNION:去除重复记录,或合并多个查询的结果。 这两份文档合在一起,能够为用户提供全面的Oracle SQL语法支持,无论是在日常的查询编写,还是在复杂的数据库设计和优化中,都能找到相应的指导。通过...
`:去除重复值。 - `ORDER BY column ASC/DESC;`:按列排序,ASC为升序,DESC为降序。 5. 数据插入与更新: - `INSERT INTO 表名 (column1, column2) VALUES (value1, value2);`:插入新记录。 - `UPDATE 表名 ...
**注意:** Oracle和DB2都支持使用`DISTINCT`关键字来去除重复值。 #### 十八、Null值转换 **Oracle:** ```sql SELECT NVL(col, default_val) FROM table; ``` **DB2:** ```sql SELECT COALESCE(col, default_...
- **编写基本的SQL SELECT语句**:学习如何构建SQL查询,包括使用`SELECT`语句从数据库中检索数据,了解`DISTINCT`关键字用于去除重复行,以及如何使用`LIKE`、`IN`、`BETWEEN`等条件来过滤数据。 - **限制和分类...
6. **SQL SELECT语句中去除重复记录的关键字:** - 在SQL SELECT语句中,使用`DISTINCT`关键字可以去除查询结果中的重复记录。 7. **SQL分组查询中去掉不满足条件的分组:** - 在使用SQL语言的SELECT语句进行分组...
- **去除重复数据**:默认情况下,SQL会返回所有匹配的行,但DISTINCT关键字可以去除重复的值,如`SELECT DISTINCT stu_age FROM stu`。 - **表达式查询**:在SELECT语句中,可以使用算术运算符和逻辑运算符来构造...
因此,去除重复记录是数据库管理中的一个重要环节。Oracle数据库提供了多种方法来实现字段级别的去重。 #### 二、去重需求分析 根据提供的描述“oracle字段去重 以某一个字段去重”,可以理解为在某个表中基于特定...
- **第一范式(1NF)**:介绍去除重复组的基本原则。 - **第二范式(2NF)**:教授如何消除非主键字段对非候选键的部分依赖。 - **第三范式(3NF)**:介绍如何消除非主键字段对非候选键的传递依赖。 #### 二十七、数据库...
10. 一个剔重SQL的讨论:在数据处理中,去除重复记录是一个常见的需求。讨论可能会涉及使用ROW_NUMBER()、DISTINCT关键字以及GROUP BY子句等方法。 11. 网易数据库笔试题:可能涉及数据库基础知识、SQL语句编写技巧...
Oracle是世界上最流行的关系型数据库管理系统之一,尤其在企业级应用中广泛应用。...随着经验的积累,你还将接触到存储过程、触发器、分区、游标、事务控制等更复杂的概念,这些都是成为Oracle数据库管理员必备的技能。
- **DISTINCT关键字**:去除重复记录,如`SELECT DISTINCT name FROM lsz_info;` - **条件查询**:使用`WHERE`子句进行条件过滤,如`SELECT * FROM info_lsz WHERE age > 25;` - **BETWEEN运算符**:选择在两个值...
#### 六、Oracle中的函数与存储过程 - **知识点解析**: - **函数与存储过程概念**: - 函数:必须返回一个值,可以在SQL语句中直接调用。 - 存储过程:可以有输入参数,也可以有输出参数,但不一定要返回值。 ...
- DISTINCT:去除重复行。 3. **Oracle数据类型** - NUMBER:数值类型,可以包含整数和小数。 - VARCHAR2:可变长度字符串。 - DATE:日期和时间类型。 - CLOB和BLOB:用于存储大量文本和二进制数据。 4. **...
- 使用DISTINCT关键字去除重复的记录。 ##### 1.5 SQL*Plus与SQL的关系 - **SQL*Plus**:Oracle提供的命令行工具,用于执行SQL语句。 - **功能**:提供了一系列的命令,帮助用户执行SQL语句、管理会话等。 - **...
- Oracle的PL/SQL是过程化SQL,用于编写存储过程、函数、触发器等。 12. **数据库对象权限管理**: - 使用GRANT和REVOKE语句控制用户对数据库对象的访问权限。 13. **备份与恢复**: - Oracle提供了多种备份和...