Приведена следующая таблица:
Table Before: TABLE_FOO
| TEST_ID | RUN_ID |
|---------|--------|
| 1000 | 10 |
| 1000 | 11 |
| 1000 | 12 | <-- keep
| 2000 | 20 |
| 2000 | 21 | <-- keep
| 3000 | 30 | <-- keep
Мне нужно очистить все строки, где RUN_ID
равно , а не максимальный идентификатор для TEST_ID
, чтобы таблица выглядела как следующее:
Table After: TABLE_FOO
| TEST_ID | RUN_ID |
|---------|--------|
| 1000 | 12 |
| 2000 | 21 |
| 3000 | 30 |
Моя лучшая попытка на данный момент:
DELETE FROM TABLE_FOO
WHERE RUN_ID NOT IN (SELECT MAX(RUN_ID) FROM TABLE_FOO GROUP BY TEST_ID)
Производительность имеет решающее значение. Вы думаете, что есть более быстрый / более эффективный способ?