首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求删除重复记录的sql 语句,保留细ID的那条记录解决方案

2012-01-22 
求删除重复记录的sql 语句,保留细ID的那条记录如题,急[解决办法]delete T where ID not in (select min(a.

求删除重复记录的sql 语句,保留细ID的那条记录
如题,急

[解决办法]
delete T where ID not in (select min(a.id) from T a where a.X=T.X)

X是重复记录的字段

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
用Group By把重复项目找出来,然后对每组重复的作如下处理:
1.用ID以外的数据将重复数据SELECT出来,ORDER BY ID,然后取TOP 1,这就得到最小的ID。
2.用DELETE进行删除,条件为ID以外的所有字段,以及ID大于上面选出的最小ID。
[解决办法]
Having count(*) > 1
[解决办法]
这类东西,首先要知道你有没有主键。没有主键时的做法用道有主键的表上,就是惊人地差的写法。有主键的写法用到没有主键的表上,显然,驴唇唇不对马嘴。

你有义务先把结构设计说清楚,然后再问。
[解决办法]
--建立測試環境
--假設ID為主鍵,A,B即為你要判斷的字段
Create Table TEST
(IDInt Primary Key,
AInt,
BInt,
CInt)
--插入數據
Insert TEST Select 1, 2, 3, 5
Union All Select 2, 2, 3, 5
Union All Select 3, 3, 3, 6
Union All Select 4, 3, 7, 1
Union All Select 5, 5, 6, 2
Union All Select 6, 3, 3, 3
Union All Select 7, 3, 3, 5
GO
--測試
Select * From TEST

--刪除重復
Delete A From TEST A
Where Exists (Select ID From TEST Where ID < A.ID And A = A.A And B = A.B)

Select * From TEST
GO
--刪除測試環境
Drop Table TEST
--結果
/*
--刪除前結果
1235
2235
3336
4371
5562
6333
7335

--刪除後結果
IDABC
1235
3336
4371
5562
*/
[解决办法]
select id,jiancailei,xxjiancaiming,datatime from jiancai where id in (select max(id) as id from jiancai group by jiancailei) order by datatime desc
[解决办法]
having 查询最简单

热点排行