SQLite:删除重复的条目

时间:2011-05-26 10:00:37

标签: 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

无论如何都这样做? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

这有效:

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),然后删除所有其他行。