SQLite: удаление повторяющихся записей - PullRequest
0 голосов
/ 26 мая 2011

Я новичок в 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 Ответ

2 голосов
/ 27 мая 2011

Это работает:

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), а затем удаляет все остальные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...