删除多个重复项,在sql中保留最大ID

kev*_*ski 5 sql-server sql-server-2008 sql-delete

我有一个包含大量重复量的数据库,每有一个独特的ID,但它们的PermitIDEncID是相同的.我需要删除数据库中除最高ID之外的所有ID.

sql语句,

DELETE FROM tblInvoices 
WHERE EncID = '0237' AND PermitID IN (
SELECT Max(ID) FROM tblInvoices Group BY PermitID)
Run Code Online (Sandbox Code Playgroud)

删除所有记录.我试过了

DELETE FROM tblInvoices 
WHERE EncID = '0237' AND PermitID 
< (SELECT Max(ID) FROM tblInvoices Group BY PermitID)
Run Code Online (Sandbox Code Playgroud)

但我收到错误 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

数据的一个例子是

ID    PermitID    EncID
1       11          22
2       11          22
3       11          22
4       12          23
5       12          23
Run Code Online (Sandbox Code Playgroud)

我想保留3,删除2和1.我还想保留5并删除4

JBr*_*oks 8

把事情简单化.

DELETE FROM tblInvoices 
WHERE ID NOT IN
   (SELECT MAX(ID)
   FROM tblInvoices
   GROUP BY EncID, PermitID)
Run Code Online (Sandbox Code Playgroud)