主键重复就说明当初在做数据表设计时没有考虑周到,或现实数据本身就是有这种特性,那么就需要考虑如何才能使其唯一性,这就是你作为一个软件开发人员所需要考虑的问题。
你使用的是什么数据库系统,一般都有将数据库导出的功能,也可以通过SQL语句来实现。简例如下:
select from <数据表名> into <导出的文件名>
详细的可以查阅对应数据库系统的SQL语句就可以了。
假设你图中的表为表A,如下SQL,如有问题追问
SELECT T1 FROM 表A T1,(SELECT ROWNUM AS ID FROM DUAL CONNECT BY ROWNUM <= (SELECT MAX(DEPTNO) FROM 表A)) T2
WHERE T1DEPTNO >= T2ID
ORDER BY 1
1 去重
11 查询
111 存在部分字段相同的纪录,即有唯一键主键ID
最常见情况如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组
select from table where id in (select max(id) from table group by [去除重复的字段名列表,])
112 存在两条完全相同的记录用关键字distinct就可以去掉
select distinct id(某一列) from table(表名) where (条件)
113 查找表中不含重复的数据,根据单个字段(id)来判断
select from table where id in (select id from table group by id having count (id) >1)
114 查找表中重复的数据,根据单个字段(id)来判断
select from table where id not in (select id from table group by id having count (id) >1)
115 查询全部的重复信息
select from people where id not in (select min(id) from people group by name,sex HAVING COUNT() < 2)
116 查询全部的重复信息
select from table where id not in (select MIN(id) from table group by name,sex)
117 删除多余重复的信息,只保留最小ID
delete from table where id not in(select MIN(id) from table group by name,sex)
比较是否相同,如果只是相同才放入到map1的话,可以写sql,条件为两张表的id相等
select
from
数据库a表名
a
,数据库b表名
b
where
aid
=
bid
不同的数据库sql不同,需要修改,sqlserver数据库名后要加所有者,一般是dbo
一般情况下,数据库去重复有以下那么三种方法:
第一种:
两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:
SELECT DISTINCT FROM TABLE第二种:
两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及group by分组。例:
SELECT FROM TABLE WHERE ID IN (SELECT MAX(ID) FROM TABLE GROUP BY [去除重复的字段名列表,])第三种:
两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:
//创建临时表,并将数据写入到临时表SELECT IDENTITY(INT1,1) AS ID, INTO NEWTABLE(临时表) FROM TABLE
//查询不重复的数据
SELECT FROM NEWTABLE WHERE ID IN (SELECT MAX(ID) FROM NEWTABLE GROUP BY [去除重复的字段名列表,])
//删除临时表
DROP TABLE NEWTABLE
-- SQL语句如下:
INSERT INTO B(字段1,字段2,字段3) SELECT 字段1,字段2,字段3 FROM A;
/
需要注意的是:
1、字段必须相同。
2、B表的主键字段必须是自增。
缺点:
目前有重复数据也会插入到B表,如另有需求,请自行查询。
/
首先一点是主键是不可能重复,为什么我们要设定主键?主键就是防止重复的数据添加,我给你一个思路:你不是要把重复的数据保存出来吗?你在添加数据的时候首先要进行数据判断,判断甲表中是否有该数据,如果有那么就保存到乙表中,如果没有就保存到甲表中,这样不就把重复的数据保存下来了吗?希望对你有所帮助。
以上就是关于想用sql loader上传数据,APPEND模式,主键重复怎么办还有数据文件我想从数据库中导出,需要怎么办全部的内容,包括:想用sql loader上传数据,APPEND模式,主键重复怎么办还有数据文件我想从数据库中导出,需要怎么办、oracle数据库实际只有几条不同的数据,但是我查询出来的数据要重复,主键(数字)不同重复次数不同、数据库sql去重等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)