惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
J
Java Code Geeks
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
L
LangChain Blog
WordPress大学
WordPress大学
A
About on SuperTechFans
Martin Fowler
Martin Fowler
月光博客
月光博客
Y
Y Combinator Blog
U
Unit 42
D
Docker
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - tiasys

guid与Base64编码互相转换 xml序列化与反序列化工具 Win10 15063 开始运行不保存历史记录原因和解决方法 win10 localhost 解析为 ipv6地址 ::1 的解决办法 在VisualStudio中应该使用什么字体 S7-200系列PLC与WINCC以太网通信CP243i的实例 超棒的 15 款 Bootstrap UI 编辑器 NuGet学习笔记(转) SQLServer公历转农历函数(1900年-2049年) WPF 的datagrid 列名中没有显示下划线是怎么回事? Vmware9.0打开早期版本报错:this virtual machine’s policies are too old to be run by this version of vmware workstation” Remove WebCakeDesktop Windows8[启用WCF IIS8 svc文件访问服务] Windows8[启用IIS8 asp.net功能] Windows8 [未启用.net3.5功能] Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站] Oracle 正确删除archivelog文件 .NET实现Wap飞信协议 黑链代码
SQLSERVER 删除重复记录
tiasys · 2012-09-22 · via 博客园 - tiasys

SQLSERVER 删除重复记录 

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select
* from people
where peopleId in (select peopleId from
people group by peopleId having count(peopleId)
> 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete
from people
where 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 a
where (a.peopleId,a.seq)
in (select peopleId,seq from vitae group by peopleId,seq having
count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where
(a.peopleId,a.seq) in (select peopleId,seq from vitae group by
peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from
vitae group by peopleId,seq having count(*)>1)


5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where
(a.peopleId,a.seq) in (select peopleId,seq from vitae group by
peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from
vitae group by peopleId,seq having count(*)>1)

(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select
Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having
Count(*) > 1