当前位置: 代码迷 >> Sql Server >> SQL删除重复数据的有关问题
  详细解决方案

SQL删除重复数据的有关问题

热度:32   发布时间:2016-04-24 10:13:07.0
SQL删除重复数据的问题
delete from [wyz].[dbo].[ghsj] a where (a.[付款账号],a.[收款账号],a.[交易金额],a.[交易日期]) in (select [付款账号],[收款账号],[交易金额],[交易日期] from [wyz].[dbo].[ghsj] group by [付款账号],[收款账号],[交易金额],[交易日期] having count(*)>1) and [bh] not in (select min([bh]) from [wyz].[dbo].[ghsj] group by [付款账号],[收款账号],[交易金额],[交易日期] having count(*)>1)
go

报错:
消息 102,级别 15,状态 1,第 2 行
“a”附近有语法错误。
消息 156,级别 15,状态 1,第 2 行
关键字 'and' 附近有语法错误。
------解决方案--------------------

DELETE  a
FROM    [wyz].[dbo].[ghsj] a
WHERE   EXISTS ( SELECT 1
                 FROM   ( SELECT    [付款账号] ,
                                    [收款账号] ,
                                    [交易金额] ,
                                    [交易日期]
                          FROM      [wyz].[dbo].[ghsj]
                          GROUP BY  [付款账号] ,
                                    [收款账号] ,
                                    [交易金额] ,
                                    [交易日期]
                          HAVING    COUNT(*) > 1
                        ) b
                 WHERE  a.[付款账号] = b.[付款账号]
                        AND a.[收款账号] = b.[收款账号]
                        AND a.[交易金额] = b.[交易金额]
                        AND a.[交易日期] = b.[交易日期] )
        AND [bh] NOT IN ( SELECT    MIN([bh])
                          FROM      [wyz].[dbo].[ghsj]
                          GROUP BY  [付款账号] ,
                                    [收款账号] ,
                                    [交易金额] ,
                                    [交易日期]
                          HAVING    COUNT(*) > 1 )
  相关解决方案