首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

剔除重复字段的SQL语句到底错在哪?(根据多个字段判断重复)

2012-10-17 
删除重复字段的SQL语句到底错在哪?(根据多个字段判断重复)表A:如下IDaIDLHMC19366 5B(1.5m)配布配布29366

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

 
ID aID LH MC
19366 5B(1.5m)配布配布
29366 5B(1.5m)主布主布
39366 5BT宝塔线宝塔线
49366 5BT宝塔线宝塔线
59366 5B沿条沿条
69367 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
[解决办法]
全半角的问题 
楼主看看吧

热点排行