2017-07-13 57 views
-1
id | MEMBER_BADGE_ID | MEMBER_ID 
3127| 859986   | 2320 
3128| 859986   | 2320 
2461| 860058   | 1915 
2545| 860062   | 1921 
2546| 860062   | 1921 
2460| 860063   | 1164 
2468| 860064   | 1919 
2469| 860064   | 1919 
2472| 860067   | 1921 
2476| 860076   | 1923 
2547| 860077   | 1930 
2489| 860086   | 1930 
2474| 860089   | 1922 
2475| 860089   | 1922 
2477| 8600102   | 1924 

我想刪除整個表中最舊的ID的重複行。刪除重複的記錄,並保留一個具有較低的ID

select id,MEMBER_BADGE_ID,MEMBER_ID 
from MEMBERS 
order by MEMBER_BADGE_ID 
+0

您正在使用什麼數據庫系統? – SandPiper

回答

1

這本:

DELETE FROM MEMBERS 
    WHERE id IN (
    SELECT MIN(id) id 
    FROM MEMBERS 
    group by MEMBER_BADGE_ID, MEMBER_ID 
    having count(*) >1) 
+0

小心分享爲什麼它不起作用?我只是試了一下,它的工作原理。 – kots

+0

@VarunMehta這是一個有效的答案。結果將爲 (3128,859986,2320)和(2546,860062,1921) –

+0

如果在查詢中使用GROUP BY,則SELECT語句中的所有項都必須包含爲聚合函數的一部分,例如, Sum()或Count(),否則它們也需要包含在GROUP BY子句中。 ...您需要使用聚合函數,然後按任何非聚合列進行分組。 –

相關問題