求删除重复记录的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 查询最简单