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 )