Access中如何同时删除两个表中ID相同的记录

作者&投稿:点虎 (若有异议请与网页底部的电邮联系)
Access中如何同时删除两个表中ID相同的记录~

在Access或SQL SERVER中用SQL删除重复记录的N种方法
2009-11-10 16:34
例如:
id name value
1 a pp
2 a pp
3 b iii
4 b pp
5 b pp
6 c pp
7 c pp
8 c iii
id是主键
要求得到这样的结果
id name value
1 a pp
3 b iii
4 b pp
6 c pp
8 c iii
方法1
delete YourTable
where [id] not in (
select max([id]) from YourTable
group by (name + value))

方法2
delete a
from 表 a left join(
select id=min(id) from 表 group by name,value
)b on a.id=b.id
where b.id is null


查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0 方法二
”重复记录”有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四)
查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1 )

下面是本人加入:
在ACCESS中,执行SQL语句用如下方法
方法1
docmd.runSQL sql语句
方法2
CurrentProject.Connection.Execute sql语句

根据表2的数据,确定表1中哪些是重复的,下图是表2数据;
在表1的辅助列输入公式:=MATCH(B2,Sheet2!B:B,0),并下拉填充,结果为序号的为重复数据;

定位--定位条件--公式--去除错误前面的勾;
确定后,数字部分被选中;

删除--删除工作表行;

删除后即得到不重复的数据;
再删除辅助列中的公式,就是想要的结果。

其它回答: 在Access或SQL SERVER中用SQL删除重复记录的N种方法 2009-11-10 16:34 例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name value 1 a pp 3 b iii 4 b pp 6 c pp 8 c iii 方法1 delete YourTable where [id] not in ( select max([id]) from YourTable group by (name + value)) 方法2 delete a from 表 a left join( select id=min(id) from 表 group by name,value )b on a.id=b.id where b.id is null 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) 3、查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) (二) 比方说 在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1 如果还查性别也相同大则如下: Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 (三) 方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0 方法二 ”重复记录”有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下 假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集 select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2) 最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列) (四) 查询重复 select * from tablename where id in ( select id from tablename group by id having count(id) > 1 ) 下面是本人加入: 在ACCESS中,执行SQL语句用如下方法 方法1 docmd.runSQL sql语句 方法2 CurrentProject.Connection.Execute sql语句

在Access或SQL SERVER中用SQL删除重复记录的N种方法
2009-11-10 16:34
例如:
id name value
1 a pp
2 a pp
3 b iii
4 b pp
5 b pp
6 c pp
7 c pp
8 c iii
id是主键
要求得到这样的结果
id name value
1 a pp
3 b iii
4 b pp
6 c pp
8 c iii
方法1
delete YourTable
where [id] not in (
select max([id]) from YourTable
group by (name + value))

方法2
delete a
from 表 a left join(
select id=min(id) from 表 group by name,value
)b on a.id=b.id
where b.id is null

查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0 方法二
”重复记录”有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四)
查询重复
select * from tablename where id in (
select id from tablename
group by id
having count(id) > 1 )

下面是本人加入:
在ACCESS中,执行SQL语句用如下方法
方法1
docmd.runSQL sql语句
方法2
CurrentProject.Connection.Execute sql语句


access数据库中,怎么实现两个表的同步?
1.首先打开Access数据库后,建立两个数据表来作为举例。2.建立好数据表以后,点击表可以看到两个表中包含不同的字段内容,如果我们要查询任何一个字段的记录内容,就要将两个表建立起关系,相互关联。选中任何一个表,然后点击工具栏上的视图图标。3.现在切换到设计界面,点击工具栏上的【关系】按钮,打...

access如何使第一个字段输入相同数字
1、先导出文件为Excel如果不想做更新查询的话,还可以删除之前的记录,然后右击粘贴,也可以这样做,同样可以达到目的。甚至如果不想导入,直接复制Excel的数据行(必须是整行),只要字段一模一样的话。修改完毕后再导入到Access,在Excel里修改应该很方便(下拉或者双击复制单元格就好了)。2、在设计视图...

access里怎么同列中的重复数据
点击“新建查询”选择“查找重复项查询向导”选择表1,则建立一个查询,这里叫做 1' ,执行它,只包含重复项!!! 再新建一个查询,在设计视图中建立查询,选择 1' ,点击"添加",然后关闭"显示表"对话框,双击A,B两个字段,在工具栏中找到"总计"工具,点击,在设计视图中A,B下面看见了"分组"字样,...

如何实现ACCESS中两张表的同步?
1、你的问题不应该是 ACCESS 问题,而应该是前台编程语言的问题,因为你根本没有使用 ACCESS ,而只是使用了 MDB 这个格式的文件而已。ACCESS 软件的很多功能你根本没有使用也无法使用。2、既然你没有使用ACCESS,那么你的问题也无法从 ACCESS 方面得到解决。给你的建议是在前台编程语言中,比如 ASP 中...

access怎样设置前六位身份证相同的查询
1、单击“创建”选项卡里“查询向导”。2、在弹出的“新建查询”对话框中选择“查找重复项查询向导”。3、在弹出的“查找重复项查询向导”对话框中单击“下一步”。4、在弹出的“查找重复项查询向导”对话框中选择重复字段“姓名”和“职称”,然后单击“下一步”。5、在弹出的“查找重复项查询向导...

access怎么输入与上一行相同内容
用excel辅助。先导出文件为Excel如果不想做更新查询的话,还可以删除之前的记录,然后右击粘贴,也可以这样做,同样可以达到目的。甚至如果不想导入,直接复制Excel的数据行(必须是整行),只要字段一模一样的话。修改完毕后再导入到Access,在Excel里修改应该很方便(下拉或者双击复制单元格就好了)。acces...

access中如何查询相同的项:
在查询界面点新建,就在重复项与不重复项查询,按向导一步步做就可以了

access中如何实现两个表同时更新?
首先建立两个表关系时,要将“实施参照完整性”“级联更新相关字段”选中,然后只要在表一输入数据时,单击左边的“+”号展开,就可输入表二中的内容,如下图。

如何在access中同时查询两个或两个以上的关键词
select * from [Table]where content like '%a%' and content like '%b%'...如果有一个关键词就可以的话就把and换成or

如何使用Access数据库筛选相同的数据
1.在菜单栏上点击:创建——查询向导,如图所示。2.在新建查询对话框中,选择查找重复项查询向导,然后点击确定。3.选择一个表,也就是在这个表中查找重复项,点击下一步。4.选择一个可用字段,我选择了采购订单,然后点击添加按钮,接着点击下一步。5.同样的方法将状态ID添加进入。点击下一步。6....

达州市17596546229: VB : 在 Access中有多个表,如何同时删除这些表中的数据?代码怎么写?谢. -
肇沾康迪: 表之间有关联吗?有关联的话,设置关联键,删除一个表自动同时删除其他表.没有关联的话,就要用代码分别删除.遍历多个表,执行 DELETE * FROM 表

达州市17596546229: access 怎么删除多个表中同一项 某一行记录 比如我要把这两张表中的F000045950 这多行数据删除 该怎么弄 -
肇沾康迪: 1)先两表建关系关联,使用删除查询.2)如果删除查询提示不成功,另外一个保险的方法是在要删除记录的表中另增一标记字段如“删除标记”,然后加入两表建更新查询,关联ID号,将“删除标记”中的标记置为“是”;完成后,再新建一删除查询,就加入那个需要删除记录的表,删除的条件是“删除标记”为“是”的记录,100%能成功.

达州市17596546229: Access中如何同时删除两个表中ID相同的记录 -
肇沾康迪: 其它回答: 在Access或SQL SERVER中用SQL删除重复记录的N种方法 2009-11-10 16:34 例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name value 1 a pp 3 b iii 4 b pp 6 c pp 8 c iii ...

达州市17596546229: access中有两个表,想要从表一中把表二对应的数据删掉要怎么做?希望能讲解详细点,在线等 -
肇沾康迪: 还是没描述明白,你直接把你俩表的数据简单列一下吧一般情况下比如如下数据表1id name1 a2 b3 c表2id...

达州市17596546229: 急~~~access 数据库 多表删除
肇沾康迪: 直接写3行就行 delete from a where 字段='m' delete from b where 字段='m' delete from c where 字段='m' 在数据库上做,不用在程序里面做. 以Access 2003为例:你在工具菜单的关系中创建表之间的关系,在编辑关系对话框的下方就有一个实施参照完整性,你勾中它,在下面有"级联更新相关字段","级联删除相关记录",勾中它不就成了吗!照你上面的表,你就创建主表A的ID=从表b_aid,再把主表和另一个表,C也同样关联就可以了,,然后编辑它们的关系就行了!OK?

达州市17596546229: 在数据库中如何删除关联了2个表中的一些数据 -
肇沾康迪: 一个比较简单的方法,在数据库的主外键关系里面设置,如下图所示: 这样在主表中删除该条信息时,所有从表中应用到该条信息的数据就会删除了.

达州市17596546229: (急)ASP+ACCESS如何实现同时往两个表中添加、删除、修改数据? -
肇沾康迪: '同时添加 set rs=server.CreateObject("adodb.recordset") rs.open "select * from 表1",conn,1,3 rs.AddNew rs("编号A")=trim(request.form("编号A")) rs("大类名称A")=request.form("大类名称A") rs.Update rs.Close set rs=...

达州市17596546229: ACCESS多表数据同时删除,该如何关联?
肇沾康迪: 在Relationdships 中建两表的关联且是强制del或update 的 这样只要对主表操作就行了 不需要对从表再进行操作了

达州市17596546229: delete 同时删除2数据表中的数据 -
肇沾康迪: DELETE语句的FROM后只能写一个表名.最好先将两个表的数据创建一个视图对象,然后用DELETE语句删除该视图中的所有数据.

达州市17596546229: 怎么用sql语句删除access 2个关系表的记录 -
肇沾康迪: Delete from table 语法 删除的时候有个注意点:两个表存在参照关系的话,先删除有参照性约束的表,后删除被参照的表;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网