示例
假设存在一个产品信息表Procts,其表结构如下:
CREATETABLEProcts(
ProctIDint,
ProctNamenvarchar(40),
Unitchar(2),
UnitPricemoney
)
表中数据如图:
*fromProcts_tempdroptableProcts_temp
这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的
B. 如何查找数据库中的重复数据
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from peoplewhere 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 awhere (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having
(2)wpf数据库表存相同内容扩展阅读
FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。
例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
SELECTusername,citytable.cityid
FROMusertable,citytable
WHEREusertable.cityid=citytable.cityid
在FROM子句中可用以下两种格式为表或视图指定别名:
表名 as 别名
表名 别名
C. 数据库中某字段存在相同数据,怎么删除第一条记录;
单纯用SQL语句,我们可以利用自增ID列来删除有重复的第一条记录,如果数据表不含自增ID列那么就得依靠游标或应用程序端编程来解决了,因为数据库引擎搞不清楚究竟那一条记录是第一条。
下面是利用自增ID列删除t1表a列有重复的第一条记录的SQL语句示例:
delete from t1 where id in (
select min(id) from t1 group by a
having count(1)>1);
需要说明一下,删除有重复的记录中的第一条记录在逻辑上并不能保证数据表不再存在重复,因为,因为重复记录可以有无限多条而不仅仅是只有两条重复一种情况。
下面语句可以删除t1表中a列有重复的记录,对于有重复的记录只保留最新的那一条记录,让该表不再有重复:
D. 数据库中如何保存主键内容重复的信息
主键的定义就是:必须唯一的标识每一条记录。你可以试试改下主键,比如使用组合码。如果有需要你也可以多增加一列,SID用这种无意义的物理主键取代你现在有的物理主键,把原先的主键去掉作为逻辑主键。有不明白的可以继续问。