Sql 删除重复记录,保留id较低的记录
我想删除整个表中ID最早的重复行Sql 删除重复记录,保留id较低的记录,sql,Sql,我想删除整个表中ID最早的重复行 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 | 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
这是:
select id,MEMBER_BADGE_ID,MEMBER_ID
from MEMBERS
order by MEMBER_BADGE_ID
想分享一下为什么它不起作用吗?我刚试过,效果很好。这是一个有效的答案@varunheta。结果将是(31288599862320)和(25468600621921)。如果在查询中使用GROUPBY,SELECT语句中的所有项都必须包含在聚合函数中,例如Sum()或Count(),否则它们还需要包含在GROUPBY子句中。。。您需要使用聚合函数,然后按任何非聚合列分组。@varunheta()不是聚合函数吗?您使用的是什么数据库系统?
DELETE FROM MEMBERS
WHERE id IN (
SELECT MIN(id) id
FROM MEMBERS
group by MEMBER_BADGE_ID, MEMBER_ID
having count(*) >1)