数据库排除重复数据
2023-01-20阅读(455)
问:删除数据库中重复数据的几个方法
- 答:楼上说的很全面呢,不过如果有其他什么问题就联系我吧:一八六 二一一八 三四七二,这是我的手机呦
问:SQL数据库查询去除重复的关键字是什么?
- 答:DISTINCT 关键字可从 SELECT 语句的结果中消除重复的行。如果没有指定 DISTINCT,将返回所有行,包括重复的行。例如,如果选择 ProductInventory 中的所有产品 ID 时没有使用 DISTINCT,将返回 1069 行。\x0d\x0a\x0d\x0a如果使用了 DISTINCT,就可以消除重复的行,只查看唯一的产品 ID:\x0d\x0a \x0d\x0aUSE AdventureWorks;\x0d\x0aGO\x0d\x0aSELECT DISTINCT ProductID\x0d\x0aFROM Production.ProductInventory\x0d\x0a\x0d\x0a此查询将返回 432 行。
问:sql数据库中出现重复行数据,如何删除这些重复记录?
- 答:一般情况下,数据库去重复有以下那么三种方法:
第一种:
两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:
SELECT DISTINCT * FROM TABLE
第二种:
两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及group by分组。例:
SELECT * FROM TABLE WHERE ID IN (SELECT MAX(ID) FROM TABLE GROUP BY [去除重复的字段名列表,....])
第三种:
两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:
//创建临时表,并将数据写入到临时表
SELECT IDENTITY(INT1,1) AS ID,* INTO NEWTABLE(临时表) FROM TABLE
//查询不重复的数据
SELECT * FROM NEWTABLE WHERE ID IN (SELECT MAX(ID) FROM NEWTABLE GROUP BY [去除重复的字段名列表,....])
//删除临时表
DROP TABLE NEWTABLE
- 答:怕用别的方法删除出错的话,可以用 去重查询,放到另一张表中,删除后再放回去啊!
select distinct * into A from B 去重存另一张表
delete B-- 删除B中数据
--放回数据
insert into B
select * from A
注意:分开执行!用go分开的话,有可能删除数据,但因为语句没结果而未完全删除。 - 答:delete from TABLE_name t1
where t1.rowid >
(select min(rowid) from TABLE_name t2
where t1.name = t2.name
group by name
having count(name) > 1); 肯定没问题的哈