删除完全一样的重复数据, 保留其中一条
2013-07-19 09:45
477 查看
--1. 删除已存在表. IF EXISTS ( SELECT 1 FROM sysobjects WHERE id = OBJECT_ID(N'test') AND OBJECTPROPERTY(id, N'IsUserTable') = 1 ) BEGIN DROP TABLE test END GO --2. 建表 CREATE TABLE [dbo].test( [userId] [int] NOT NULL, [name] VARCHAR(20) NOT NULL,isEnabled BIT) GO INSERT INTO dbo.test SELECT 1,'aa',0 UNION ALL --注:只能用 union, 不能用 union all. 要不只会有一条记录 SELECT 1,'aa',1 UNION ALL SELECT 2,'bb',0 UNION ALL SELECT 2,'bb',0 UNION ALL SELECT 2,'cc',1 UNION ALL SELECT 3,'dd',0 GO --如果有视图先删除 IF EXISTS(SELECT 1 FROM sys.views WHERE name='tmp_view_test') DROP VIEW tmp_view_test GO --创建视图 (注:PARTITION BY的功能为以xxx列来分组, 有点相当于group by) --尽可能删除 isEnabled = 0 的记录 CREATE VIEW tmp_view_test AS SELECT ROW_NUMBER() OVER(PARTITION BY [userId] ORDER BY ISNULL(isEnabled,0) DESC) AS num,* FROM test GO --删除前情况 SELECT * FROM tmp_view_test ORDER BY userid,num --删除重复 DELETE FROM tmp_view_test WHERE num!=1 --删除后情况 SELECT * FROM tmp_view_test ORDER BY userid,num
相关文章推荐
- 2条完全一样的数据删除一条保留一条,用SQL语句删除。
- oracle 快速移动数据和删除重复数据但保留其中一条数据
- 数据库删除完全重复的数据,针对每条重复的数据只保留一条
- 【SQL】2条完全一样的数据删除一条保留一条
- 面试题中经常遇到的SQL题:删除重复数据,保留其中一条
- 如何删除表中的重复记录只保留其中一条?
- 高效删除Oracle数据库中重复数据,并保留最新一条的方法
- SQL删除重复数据只保留一条
- oracle 删除掉重复数据只保留一条
- SQL删除重复数据只保留一条
- mysql 删除表中重复的数据,只保留一条
- SQL删除重复数据只保留一条
- 如何删除表中的重复记录只保留其中一条?
- MySQL中删除重复数据只保留一条
- MySQL下删除重复记录只保留一条数据
- T-SQL删除重复数据,保留一条
- SQL查找 删除重复数据只保留一条
- SQL Server 删除重复数据只保留一条
- SQL删除重复数据只保留一条
- Oracle 删除重复数据且保留一条数据