2015-06-27 60 views
0

有没有办法让这个SQL语句正常工作?以下是代码:SQL DELETE在哪里GROUP BY ... HAVING

DELETE AHsTransactions 
WHERE SerialNumber <> 0 
GROUP BY TypeID, AH1ID, AH2ID 
HAVING COUNT(*) > 1 

关键字'GROUP'附近的语法不正确,所以在一个SQL语句中似乎不可能。

回答

3

不,不可能改变该SQL语句直接工作。

可能是不工作的最接近的是低于

WITH T 
    AS (SELECT COUNT(*) OVER (PARTITION BY TypeID, AH1ID, AH2ID) AS c 
     FROM AHsTransactions 
     WHERE SerialNumber <> 0) 
DELETE FROM T 
WHERE c > 1 

+0

非常酷:)太糟糕了,没有什么在MySQL,但好知道(与SQL Server 2005+兼容),而我们仍然使用SQL Server! – Mark