SQL语句怎样查询并删除单个字段下的所有重复值, 重复的记录只保留一个

具体程序如下:
Set Cnn2 = Server.CreateObject("ADODB.Connection")
Cnn2.Open "PROVIDER=Microsoft.jet.OLEDB.4.0;Data Source=" & server.MapPath("./admin/db3.mdb")
Set rsTest2 = Server.CreateObject("ADODB.Recordset")
StrSQL2 = "Select * From quchiHH1 where quchiHH1.quchi like'%"& ZGb &"%'and'"& ZGb &"'<>'"&""& "'"
rsTest2.Open StrSQL2, Cnn2
For Iy = 0 To rsTest2.Fields.Count
if not(rsTest2.Fields(Iy).Value = "") then
set rsta2=conn3.Execute("insert into NCWH values ('"&rsTest2(Iy)&"')")
end if
Next
'以上代码是把一条记录里面的各字段值循环插入到新表NCWH里面的单个字段NCH下,用这样的方法再次向该表循环插入数据的时候,表NCWH就难免产生重复的值,
请高手帮忙编写一下查询并删除重复值的程序,重复的值只保留其中一个。另外请问有什么办法再次插入记录的时候过虑掉上一次已经插入过的值。本人用的是ASP+Access数据库
积分没有了,只剩下10分奉上表达心意,谢谢帮忙了

需要一个主键 id
如果是要删除是姓名重复的话,试试以下代码
delete ta where id not in
( select max(id) from group by nch )

如果要显示不重复项的数据
select * from ta where id in
( select max(id) from group by 姓名 )

如果 nch 这个地段,你需要不重复 , 事实上就可以把这一列作为主键

另外,你在添加信息的时候,做下判断,如果该列中已有,就不执行添加的代码。
并做提示信息。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-30
这是我这边的范例,供参考:
use XLERP
--1、查询重复数据
SELECT cInvCode, cAcc_Id,count(*)FROM Attribute GROUP BY cInvCode, cAcc_Id HAVING count(*) > 1
--2、选择重复值到临时表
SELECT cInvCode, cAcc_Id,bSale, bPurchase, bSelf, bComsume, bProducing, bService, bAccessary, bInvType, bPropertyCheck, bPlanInv, bProxyForeign, bATOModel, bCheckItem, bPTOModel, bMPS, bROP, bCutMantissa, bInvModel, iInvNCost, iTopSum, iLowSum, iSafeNum, fOutExcess, cInvABC, dSDate, dEDate, cCreatePerson, cModifyPerson, dModifyDate,col3=count(*) INTO holdkey FROM Attribute GROUP BY cInvCode, cAcc_Id,bSale, bPurchase, bSelf, bComsume, bProducing, bService, bAccessary, bInvType, bPropertyCheck, bPlanInv, bProxyForeign, bATOModel, bCheckItem, bPTOModel, bMPS, bROP, bCutMantissa, bInvModel, iInvNCost, iTopSum, iLowSum, iSafeNum, fOutExcess, cInvABC, dSDate, dEDate, cCreatePerson, cModifyPerson, dModifyDate HAVING count(*) > 1
--3、选择重复的行放入临时表中,以清除进程中的重复值
SELECT DISTINCT Attribute.* INTO holddups FROM Attribute, holdkey WHERE Attribute.cInvCode = holdkey.cInvCode AND Attribute.cAcc_Id = holdkey.cAcc_Id
--4、验证 holddups 中的各个键是否唯一
SELECT cInvCode, cAcc_Id, count(*) FROM holddups GROUP BY cInvCode, cAcc_Id
--5、从原始表中删除重复的行
DELETE Attribute FROM Attribute, holdkey WHERE Attribute.cInvCode = holdkey.cInvCode AND Attribute.cAcc_Id = holdkey.cAcc_Id
--6、将唯一行放回原始表中
INSERT Attribute SELECT * FROM holddups
--7、删除临时表
drop table holddups
drop table holdkey
第2个回答  2015-09-14
写个事务,就行了
第3个回答  2012-10-13
受教了,我也正好遇到这个问题

SQL语句怎样查询并删除单个字段下的所有重复值, 重复的记录只保留一个...
需要一个主键 id 如果是要删除是姓名重复的话,试试以下代码 delete ta where id not in ( select max(id) from group by nch )如果要显示不重复项的数据 select * from ta where id in ( select max(id) from group by 姓名 )如果 nch 这...

如何去掉数据库重复记录并且只保留一条记录
方法如下: 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from peoplewhere peopleId in (select peopleId from people group by peopleId hav 在n条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复并保留一条呢?方法如下:1、查找表中多余的重复记录,...

sql去重,同一个字段出现多条取一条的sql语句
要处理SQL去重问题,即在特定字段重复的情况下,仅保留该字段的唯一值并取其他字段的对应行,可以使用子查询结合窗口函数实现。首先,当要求按某字段分组并取每组中的第一条记录时,可以使用如下SQL语句:SELECT b.* FROM (SELECT a.*,ROW_NUMBER() OVER (PARTITION BY a.column) AS group_idx FROM...

...怎么删除重复记录,只保留一条,sql语句怎么写
如果只是要查询不是重复的记录的话 select distinct * from 表 如果是将多余的重复记录删除 首先将不是重复的数据提取出来,保存到一个临时表中 select distinct * into #temp from 表 然后删除原来的表 delete from 表 最后往里面插入临时表的数据 insert into 表 select * from #temp ...

如何在Sql中将重复的所有字段删除
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > ...

sql server 表中重复数据只留一条
1. 开始事务操作。2. 将原表数据备份到新表。3. 查找重复数据。使用SQL语句查询具有重复值的Sp_no字段。4. 确定需要保留的数据。通过再次查询,找出每个Sp_no下最小的Oid值。5. 确定需要删除的数据。筛选出所有重复数据中除了具有最小Oid的记录。6. 删除多余数据。最后,执行删除操作,仅保留每个Sp...

在SQL中一张表中有重复的几行,怎么删掉重复的,但是只保留一行!
-- 首先查询一下, ROW_NUMBER 效果是否满足预期 SELECT ROW_NUMBER() OVER (PARTITION BY name, value ORDER BY (SELECT 1) ) AS no,name,value FROM test_delete no name value --- --- --- 1 李四 80 1 王五 80 2 王五 80 1 张三 100 2 张三 100 1 赵六...

sql查询出来的字段如何按照指定要求去重?
要使用SQL去重查询特定字段,可借助DISTINCT关键字。示例查询语句如下:此语句利用DISTINCT去除column1、column2、column3值的重复,仅保留不同值。如需更复杂去重需求,即根据特定规则合并重复值,可结合GROUP BY子句与聚合函数。示例如下:此语句通过GROUP BY column1对结果进行分组,MAX()函数选取每组中...

面试必备:如何实现SQL语句删除重复记录且只保留一条有效记录?
只需在GROUP BY语句中增加所有需要考虑的字段。虽然第一种方法可能效率不高,第二种方法则是利用分组找出每个组中deptno最小的记录,然后排除这些记录,以获取所有重复的试题。在删除重复试题时,可以将查询语句中的SELECT替换为DELETE,但需确保在处理大数据量时,优化查询性能,例如添加索引或使用子查询。

删除数据库中重复的数据,只保留一条这个sql 怎么写?
1.找出一份不重复的表,导入到临时表,把原先的表数据删除,在把临时表的数据导回去,这个适合没有ID字段的表,语句:找出唯一数据,把重复去掉并存入中转表:select distinct * into table(中转表名称) from tb(原表)删除原表数据:delete tb 把中转表数据导入原表:insert into tb select * from...

相似回答