ACCESS Mdb数据库插入语句INSERT INTO如何判断是否有重复,若有重复不插入

ACCESS Mdb数据库插入语句INSERT INTO如何判断是否有重复,若有重复不插入,第1张

先把你要插入的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 如何高效判断数据是否重复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10193266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存