Вот моя текущая таблица sandbox
:
| id | parent_id | title | text |
|----|-----------|-------|------|
| 1 | 11 | some | text |
| 2 | 11 | some | text |
| 3 | 11 | some | text |
| 4 | 11 | some | text |
| 5 | 11 | some | text |
| 6 | 14 | some | text |
| 7 | 14 | some | text |
| 8 | 19 | some | text |
| 9 | 19 | some | text |
Чего я хочу добиться - это оставить N самых последних строк на основе определенного parent_id, оставив при этом другие строки с различными parent_ids без изменений.
Например, таблица с 3 самыми последними parent_id = 11 должна выглядеть следующим образом:
| id | parent_id | title | text |
|----|-----------|-------|------|
| 3 | 11 | some | text |
| 4 | 11 | some | text |
| 5 | 11 | some | text |
| 6 | 14 | some | text |
| 7 | 14 | some | text |
| 8 | 19 | some | text |
| 9 | 19 | some | text |
Я уже пробовал:
DELETE FROM `sandbox`
WHERE id <= (
SELECT id
FROM (
SELECT id
FROM `sandbox`
WHERE parent_id = 11
ORDER BY id DESC
LIMIT 1 OFFSET 3 <-- keep this many records
) foo
)
Но затем я теряю другие строки,получить таблицу следующим образом:
| id | parent_id | title | text |
|----|-----------|-------|------|
| 3 | 11 | some | text |
| 4 | 11 | some | text |
| 5 | 11 | some | text |
Любая помощь по правильному запросу SQL будет принята:)