SQL запрос, найти дубликаты идущие подряд
У меня есть вопрос и вот такая вот примерная таблица:
| id | name | value |
|---|---|---|
| 0 | Masha | 12 |
| 1 | Sasha | 58 |
| 2 | Sasha | 58 |
| 3 | Sasha | 58 |
| 4 | Dima | 74 |
| 5 | Tanya | 12 |
| 6 | Tanya | 12 |
| 7 | Sasha | 58 |
| 8 | Masha | 44 |
| 9 | Sasha | 58 |
| 10 | Sasha | 58 |
| 11 | Sasha | 58 |
подскажите пожалуйста какой запрос сделать что бы можно было удалить дубликаты которые идут друг за другом, со значениями в колонках name и value?
другими словами: id 1 Sasha 58 повторяется сразу подряд по следующим id 2 и 3 т.е. удалить нужно строки под id 2 и 3
обратите внимание под id 7 Sasha 58 снова дублируется но эту строку трогать не нужно, так как в следующей строке нет дубля
такая же ситуация с id 5 Tanya ..у этой строки есть дубль который идет сразу следующим 6
а в самом низу снова тажа проблема с Sasha
значения в таблице конечно же для примера и не несут смысл в происходящее, просто сложилась такая ситуация, был бы рад любой помощи
Ответы (1 шт):
WITH cte AS (
SELECT id,
name = LAG(name) OVER (ORDER BY id) AND value = LAG(value) OVER (ORDER BY id) flag
from TEST
)
DELETE
FROM test
WHERE EXISTS ( SELECT NULL
FROM cte
WHERE test.id = cte.id AND flag )
https://dbfiddle.uk/?rdbms=sqlite_3.27&fiddle=3b7d55c090d2bd99284e284675b82976