Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Туплю с удалением дубликатов / 9 сообщений из 9, страница 1 из 1
26.03.2010, 14:20:09
    #36544708
Туплю с удалением дубликатов
непонятно

здесь так:


DELETE FROM foo
WHERE id NOT IN (SELECT min(id)
FROM foo
GROUP BY hash HAVING count(*) >= 1)



так вот этот запрос удалит почти ВСЕ записи из базы - NOT IN

что неправильно курил автор? или я туплю?
...
Рейтинг: 0 / 0
26.03.2010, 15:56:44
    #36545027
N&V
N&V
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
Дубликаты данных,
1. First, as always, backup your database. :)

Код: plaintext
1.
2.
3.
4.
DELETE FROM foo
       WHERE id NOT IN (SELECT min(id)
                        FROM foo
                        GROUP BY hash HAVING count(*) >=  1 )

Возможно у него все данные 100% дублируются/троятся ... десятирятся :)
...
Рейтинг: 0 / 0
26.03.2010, 16:11:17
    #36545078
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
Сюда попадут по одной с мин идом из дублей и те которые всего по одной в таблице:

Код: plaintext
SELECT min(id)    FROM foo   GROUP BY hash HAVING count(*) >=  1 

Ну вот, а остальные удалятся, т.е только дубли...

Код: plaintext
1.
2.
3.
DELETE FROM foo
       WHERE id NOT IN (SELECT min(id)
                        FROM foo
                        GROUP BY hash HAVING count(*) >=  1 )
...
Рейтинг: 0 / 0
26.03.2010, 16:37:10
    #36545190
Туплю с удалением дубликатов
помоему этот пример корректно функционирует

автор
delete TEST_DUPLICATE
where id not in (
select min(id)
from TEST_DUPLICATE
group by value
);


где id - первичный ключ

и судя по сообщению

Tolik_lv 22 февраля 2008, 14:16Остальные решения при реальной проверке на 34 тыс
записей не работают :(.
...
Рейтинг: 0 / 0
26.03.2010, 16:48:56
    #36545229
Туплю с удалением дубликатов
а, понятно, просто HAVING COUNT(*)>=1 не имеет в данном случае смысла

я попутал с действием ограничения HAVING COUNT(*)>1, когда действительно уникальные записи могут быть удалены

непонятно, зачем было писать это ограничение.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.10.2014, 10:33:40
    #38768754
des1roer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
что-то мне подсказывает что это правильно
Код: sql
1.
2.
3.
4.
5.
6.
delete TEST_DUPLICATE
where id not in (
select min(id)
from TEST_DUPLICATE
group by value
);


гл вот у меня прошло 15 минут с запуска и ничего не произошло. таблица на 300к строк
...
Рейтинг: 0 / 0
07.10.2014, 10:38:55
    #38768758
des1roer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
все прах и тлен - вот правильный запрос
Код: sql
1.
2.
3.
4.
5.
6.
DELETE FROM "SC_Tag"."T_TagData" 
where "ID_TagData" in (
SELECT min("ID_TagData") 
 FROM "SC_Tag"."T_TagData" 
 GROUP BY "F_TagName_ID","F_Date","F_ConvertedValue" HAVING COUNT(*) > 1 ORDER BY COUNT(*)
 )
...
Рейтинг: 0 / 0
07.10.2014, 11:02:49
    #38768782
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
des1roerвсе прах и тлен - вот правильный запрос
Код: sql
1.
2.
3.
4.
5.
6.
DELETE FROM "SC_Tag"."T_TagData" 
where "ID_TagData" in (
SELECT min("ID_TagData") 
 FROM "SC_Tag"."T_TagData" 
 GROUP BY "F_TagName_ID","F_Date","F_ConvertedValue" HAVING COUNT(*) > 1 ORDER BY COUNT(*)
 )



если у вас не задвоение а затроение или больше то удалится только первый дубль из N

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
07.10.2014, 12:14:29
    #38768900
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Туплю с удалением дубликатов
секвенсы добавлять и всю таблицу апдейтить - это сильно накладно, а если еще и дублей много...

вот самое надежное:

create temp_table as select distinct * from foo;
truncate table foo;
insert into foo select * from temp_table;
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Туплю с удалением дубликатов / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]