Как удалить все строки более 50 отсчетов? - PullRequest
1 голос
/ 12 июля 2011

Мой стол:

_id | state | timeStamp

Я хочу выбрать все строки, которые имеют состояние = 0 и упорядочить результат по timeStamp. Затем я хочу удалить все элементы, для которых установлено определенное ограничение, скажем, 50 строк.

* По сути, я не хочу, чтобы было более 50 строк с состоянием = 0

Как мне этого добиться? Я пытался написать один, но я немного теряюсь ...

УДАЛИТЬ ИЗ таблицы, ГДЕ (состояние = 0) ЗАКАЗАТЬ ПО timeStamp

Ответы [ 2 ]

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

Вы можете найти метку времени для 50-й строки, а затем выполнить оператор удаления для строк, состояние которых = 0 и отметка времени которых старше (или новее, в зависимости от того, что применимо здесь), чем найденная вами отметка времени.

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

Используйте оператор NOT IN с подзапросом:
DELETE FROM table WHERE state = 0 AND _id NOT IN(SELECT _id FROM table WHERE state = 0 ORDER BY timeStamp LIMIT 50);

. Он выбирает все строки, где state = 0, а затем удаляет 50 первых строк, которые имеют state = 0 все.при заказе на timeStamp

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