一般来讲查询数据中有重复的记录,首先要确定"重复"的定义,例如单字段重复、多字段组合重复等,然后再根据"重复"的定义进行分组计数,组计数大于1的即为有重复的记录。
下面举个例子供参考:
有雇员表(工号,姓名,身份z号码)
其中字段"身份z号码"因未设置唯一索引,存在重复的情况,现要求检索出身份z有重复的员工资料,SQL实现语句如下
select a from 雇员 a,(select 身份z号码 from 雇员 group by 身份z号码 having count()>1) b
where a身份z号码=b身份z号码;
法一:
用Group
by语句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重复的,列出重复的记录数,并列出他的name属性group
by
numhaving
count(num)
>;1
–按num分组后找出表中num列重复,即出现次数大于一次delete
from
student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—-
执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相当于First,SecondWHERE
EM5_PIPE_PREFABDRAWING=DDRAWING
ANDEM5_PIPE_PREFABDSNO=DDSNO);—-
执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFABDRAWING=DDRAWING
ANDEM5_PIPE_PREFABDSNO=DDSNO);法一:
用Group
by语句
此查找很快的select
count(num),
max(name)
from
student
–查找表中num列重复的,列出重复的记录数,并列出他的name属性group
by
numhaving
count(num)
>;1
–按num分组后找出表中num列重复,即出现次数大于一次delete
from
student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—-
执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
D
–D相当于First,SecondWHERE
EM5_PIPE_PREFABDRAWING=DDRAWING
ANDEM5_PIPE_PREFABDSNO=DDSNO);—-
执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE
FROM
EM5_PIPE_PREFABWHERE
ROWID!=(SELECT
MAX(ROWID)
FROM
EM5_PIPE_PREFAB
DWHERE
EM5_PIPE_PREFABDRAWING=DDRAWING
ANDEM5_PIPE_PREFABDSNO=DDSNO);
在你的记录集添加()
前加一句代码:
记录集打开("select
from
[biao]
where
id>0",,)
不需要最后一句,记录集更新
我认为那句是多余的。我试过有没有那句
都会添加进去的。
以上就是关于怎样查询数据库中重复的数据全部的内容,包括:怎样查询数据库中重复的数据、如何查找和删除数据库中的重复数据、易语言批量添加到ACCESS数据库如何 *** 作重复数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)