У меня есть таблица, где я сохраняю все изменения строк, которые когда-либо возникали. Проблема в том, что в начале приложения возникла ошибка, которая создавала кучу копий каждой строки.SQL Удаление дубликатов по одной строке за один раз
таблица выглядит примерно так:
copies
|ID |CID |DATA
| 1 | 1 | DA
| 2 | 2 | DO
| 2 | 3 | DO (copy of CID 2)
| 1 | 4 | DA (copy of CID 1)
| 2 | 5 | DA
| 1 | 6 | DA (copy of CID 1)
| 2 | 7 | DO
ИДС УНИКАЛЕН в таблицу экземпляров.
Я хочу удалить все дубликаты DATA GROUP BY ID, которые после друг друга сортируются по CID.
Как вы можете видеть в таблице, CID 2 и 3 являются одинаковыми, и они находятся друг за другом. Я хотел бы удалить CID 3. То же самое с CID 4 и CID 6; они не имеют ID 1 между ними и являются копиями CID 1.
После удаления дубликатов, я хотел бы, чтобы таблица выглядит следующим образом:
copies
|ID |CID |DATA
| 1 | 1 | DA
| 2 | 2 | DO
| 2 | 5 | DA
| 2 | 7 | DO
Есть предложения? :)
Я думаю, что мой вопрос был плохо спросил, потому что ответ все, кажется, думает, это лучшее дает этот результат:
ID | DATA | DATA | DATA | DATA | DATA | DATA | CID |
|Expected | Quassnoi |
1809 | 1 | 0 | 1 | 0 | 0 | NULL | 252227 | 252227 |
1809 | 1 | 0 | 1 | 1 | 0 | NULL | 381530 | 381530 |
1809 | 1 | 0 | 1 | 0 | 0 | NULL | 438158 | (missing) |
1809 | 1 | 0 | 1 | 0 | 1535 | 20090113 | 581418 | 581418 |
1809 | 1 | 1 | 1 | 0 | 1535 | 20090113 | 581421 | 581421 |
ИДС 252227 И ИДС 438158 являются дубликатами, но потому, что ИДС 381530 идет между ними; Я хочу сохранить это. Это только дубликаты, которые находятся непосредственно друг за другом при заказе с помощью идентификатора CID и ID.
В вашем окончательном наборе результатов '(2, 2)' и '(2, 7)' не имеют 'id Между ними тоже. Означает ли это, что их также следует удалить? Если нет, что их отличает? – Quassnoi
У них нет ID 1 между ними, но у них (2, 5, DA). ID следует игнорировать как «дублирующиеся» данные, его следует использовать для группировки строк. Возможно, это было отвлекать, чтобы говорить о двух идентификаторах. Если вы посмотрите на последнюю таблицу, вы увидите только один идентификатор и ожидаемый результат только от этого идентификатора. –
'(1, 1)' и '(1, 4)' имеют 'DO' между ними. Почему вы хотите, чтобы '(1, 4)' был удален тогда? – Quassnoi