SQLite:删除重复的条目

问题描述

| 我是sqlite的新手,我想找到一种基于特定条件删除重复条目的解决方案。 假设我有一个这样的表:
ID | Person1 | ID1 | Person2 | ID2 | Average
-------------------------------------------
1  | Name1   |   1  | Name4 |   4  | 47
2  | Name1   |   1  | Name5 |   5  | 88
3  | Name1   |   1  | Name6 |   6  | 15
----------------------------------------
4  | Name2   |   2  | Name4 |   4  | 90
5  | Name2   |   2  | Name5 |   5  | 80
6  | Name2   |   2  | Name6 |   6  | 45
----------------------------------------
7  | Name3   |   3  | Name4 |   4  | 30
8  | Name3   |   3  | Name5 |   5  | 20
9  | Name3   |   3  | Name6 |   6  | 79
并想要一个这样的表:
ID | Person1 | ID1 | Person2 | ID2  | Average
-------------------------------------------
2  | Name1   |   1  | Name5 |   5   | 88
5  | Name2   |   2  | Name4 |   4   | 90
9  | Name3   |   3  | Name6 |   6   | 79
反正有这样做吗? 提前致谢。     

解决方法

这有效:
DELETE FROM tablename
WHERE ID NOT IN (
    SELECT T.ID
    FROM (
        SELECT ID1,MAX(Average) AS MAverage
        FROM TableName
        GROUP BY ID1
    ) AS X
    INNER JOIN TableName T
        ON X.ID1 = T.ID1 AND X.MAverage = T.Average
);
此查询查找每人平均数最高的行(基于ID1),然后删除所有其他行。