删除数据库中重复的记录
2012-01-04 12:30
232 查看
查找所有唯一的记录,删除其他记录。
最常用的 T-SQL 语句:
DELETE FROM [dbo].[myTable] WHERE 主键 NOT IN
(SELECT MAX(主键) From [dbo].[myTable] GROUP BY 列1, 列2, 列3)
列1,列2,列3为需要去重复的列。
SQL Server 2005 及以上版本,用 CTE:
WITH tmpOrderdTable
AS
(
SELECT
GroupID = ROW_NUMBER() OVER (PARTITION BY 列1, 列2, 列3 ORDER BY 主键)
FROM
[dbo].[myTable]
)
DELETE FROM tmpOrderdTable WHERE GroupID >1
为了提高效率可以先开启单人存取模式,删除完再恢复多人存取模式:
# 开启单人存取模式
USE [master]
ALTER DATABASE [myDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
# 开启多人存取模式
USE [master]
ALTER DATABASE [myDB] SET MULTI_USER WITH ROLLBACK IMMEDIATE
原文:http://www.loveyuki.com/blog/sql-serve-delete-duplicate-records
最常用的 T-SQL 语句:
DELETE FROM [dbo].[myTable] WHERE 主键 NOT IN
(SELECT MAX(主键) From [dbo].[myTable] GROUP BY 列1, 列2, 列3)
列1,列2,列3为需要去重复的列。
SQL Server 2005 及以上版本,用 CTE:
WITH tmpOrderdTable
AS
(
SELECT
GroupID = ROW_NUMBER() OVER (PARTITION BY 列1, 列2, 列3 ORDER BY 主键)
FROM
[dbo].[myTable]
)
DELETE FROM tmpOrderdTable WHERE GroupID >1
为了提高效率可以先开启单人存取模式,删除完再恢复多人存取模式:
# 开启单人存取模式
USE [master]
ALTER DATABASE [myDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
# 开启多人存取模式
USE [master]
ALTER DATABASE [myDB] SET MULTI_USER WITH ROLLBACK IMMEDIATE
原文:http://www.loveyuki.com/blog/sql-serve-delete-duplicate-records
相关文章推荐
- 常用删除数据库重复记录方法
- 如何删除数据库中的重复记录?
- 数据库-删除表中重复记录实现方法分析
- SQL删除数据库中重复的数据记录
- 删除数据库表中重复的记录
- 删除数据库中多余的重复记录(在mysql的数据库上测试过,成功删除)
- 关于如何删除数据库中重复记录
- 删除数据库重复记录
- 数据库中查找重复记录和删除重复记录的sql
- Sqlserver 2000 数据库表中删除重复记录(仅保留一条)
- SQL查询或删除数据库中重复记录
- 删除数据库中重复记录
- ----------删除数据库中重复记录的SQL语句(转)--------------------
- 删除数据库中重复记录的SQL语句
- 删除重复记录,保留数据库中最新插入的数据(或最早插入的数据)
- 如何删除数据库中的重复记录(一)
- 千万级数据库(MSSQL)删除重复记录
- 从数据库中删除重复记录 SQL(MSSQL)
- 删除数据库表中重复的记录
- 数据库中删除重复记录的一种简单的方法