先把你要插入的guige跑一个查询,select count(1)from a where guige='XXX'如果返回结果大于0就update 否则插入,要么就设置唯一性,但如果设置唯一性的话,程序里如果直接插入的话是会报错的,要么用try catch 也行,单纯在数据库里做限制好像意义不太大吧
使用group进行分组来实现。
例句:
select a,count() from table group a ;
显示的结果,a就是重复的值,count()就是重复的次数。
该SQL在Oracle、Sql Server等数据库都适用。
若要筛选重复几次的重复值,则可对sql进行变动。
比如要显示重复3次以及3次以上的资料,
例句:
select a,count() from table group a having count()>=3;
一、这么大的数据量如果一次性放到一个Map中是否内存会使用过多,这是要考虑的,是否可以考虑批量处理呢?读取也可以用批量。
二、假如一次性放到一个MAP中,是否可以保存到数据库中,保存的时候肯定是用批量处理。
你是要查找数据库中某个字段下的相同数据吧,我给你写2个例子
(数据库执行效率高)
select from dboMediafileInfo as a where
(VideoDownUrl IN (SELECT VideoDownUrl FROM MediafileInfo AS B WHERE AProgramID <> BProgramID))
(数据库执行效率低)
SELECT
FROM MediafileInfo AS A
WHERE (SELECT COUNT() FROM MediafileInfo WHERE VideoDownUrl=AVideoDownUrl)>1
一般情况下,数据库去重复有以下那么三种方法:
第一种:
两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:
SELECTDISTINCTFROMTABLE
第二种:
两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及groupby分组。例:
SELECTFROMTABLEWHEREIDIN(SELECTMAX(ID)FROMTABLEGROUPBY[去除重复的字段名列表,])
第三种:
两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:
//创建临时表,并将数据写入到临时表
SELECTIDENTITY(INT1,1)ASID,INTONEWTABLE(临时表)FROMTABLE
//查询不重复的数据
SELECTFROMNEWTABLEWHEREIDIN(SELECTMAX(ID)FROMNEWTABLEGROUPBY[去除重复的字段名列表,])
//删除临时表
DROPTABLENEWTABLE
select from shujushucai where id in (select Max(id) from shujushucai group by `url`);
id 你肯定知道是主键
shujushucai是表名称
URL是列名
以上就是关于ACCESS Mdb数据库插入语句INSERT INTO如何判断是否有重复,若有重复不插入全部的内容,包括:ACCESS Mdb数据库插入语句INSERT INTO如何判断是否有重复,若有重复不插入、如何查询数据库中记录重复的次数、java 如何高效判断数据是否重复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)