Удалить записи, которые имеют более N записей - PullRequest
0 голосов
/ 30 июня 2011

У меня есть таблица с именем history, который имеет три столбца. id, value, timestamp

Id не является первичным ключом, но пара (id, timestamp) уникальна. Что я хотел бы сделать, это удалить все старые записи для определенного идентификатора, которые превышают определенный предел. Например, если у меня есть эти значения:

-1,value1,1
-1,value2,2
-1,value3,3
-2,value4,4
-2,value5,5
-2,value6,6

И предел равен 2. После выполнения оператора я должен получить что-то вроде:

-1,value2,2
-1,value3,3
-2,value4,4
-2,value5,5
-2,value6,6

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Я думаю, что у меня есть (пробовал и работает для тестов, которые у меня были), ответ:

DELETE  FROM history WHERE id = ?1 AND timestamp NOT in (SELECT sourcetime  FROM    history   WHERE   id =?1 ORDER BY timestamp DESC LIMIT ?2);
0 голосов
/ 30 июня 2011
DELETE FROM ... WHERE timestamp < ...

не работает?

...