我是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
无论如何都这样做? 提前谢谢。
答案 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),然后删除所有其他行。