日期:2014-05-17  浏览次数:20588 次

删除重复字段的SQL语句到底错在哪?(根据多个字段判断重复)
表A:如下  

 
ID aID LH MC
1 9366 5B(1.5m)配布 配布
2 9366 5B(1.5m)主布 主布
3 9366 5BT宝塔线 宝塔线
4 9366 5BT宝塔线 宝塔线
5 9366 5B沿条 沿条
6 9367 5B沿条 沿条
.....
=========================================
需要删除 aID=9366中 第4条冗余数据。
方法A:

delete from 表A a 
where aID=9366 (a.LH,a.MC) in (select LH,MC from 表A where aID=9366 group by LH,MC having count(*) > 1 ) 
and ID not in (select min(ID) from 表A where aID=9366 group by LH,MC having count(*)>1) 

一直提示什么


服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'a' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 3
在关键字 'and' 附近有语法错误。
==============
方法B:


  delete 表A from 表A as T where
  exists( select 1 from 表A where LH=T.LH and MC=T.MC  and id < T.id )
  and aID=9366


服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: ' ' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: ' ' 附近有语法错误。



------解决方案--------------------
SQL code
delete 表A from 表A as T WHERE EXISTS(select 1 from 表A where LH=T.LH and MC=T.MC and id < T.id )  and aID=9366

------解决方案--------------------
方法A:

SQL code
delete from 表A a  
where aID=9366 and exists (select LH,MC from 表A where aID=9366 group by LH,MC having count(*) > 1 )  
and ID not in (select min(ID) from 表A where aID=9366 group by aID,LH,MC )

------解决方案--------------------
顶楼上
如何删除 SQL Server 表中的重复行http://blog.csdn.net/yangsh0722/article/details/8021246
------解决方案--------------------
全半角的问题 
楼主看看吧