powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как удалить из таблицы дублирующиеся строки?
10 сообщений из 10, страница 1 из 1
как удалить из таблицы дублирующиеся строки?
    #32519105
PrettyFly_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица, в которой записи должны быть уникальны по сочетанию двух полей - имя+фамилия
так исторически сложилось, что у нее нет ограничений типа unique или primary key
надо каким-то образом ее очистить от дублирующихся по сочетанию имя+фамилия значений
подскажите, пожалуйста, как это сделать
ЗЫ: таблица огромная(десятки миллионов)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32519123
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 PrettyFly_M

OID поле есть?
Попробуте так :
Код: plaintext
1.
2.
delete from table t1
where t1.OID not in (select t2.OID from table t2 where t2.name = t1.name and t2.lastname = t1.lastname)

P.S. В MS SQL это можно сделать через джоин, если мне кто либо покажет что так же можно сделать в Postgre буду благодарен. :)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32519124
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри неправильно подсказал
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32519125
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно так:
Код: plaintext
1.
2.
delete from table t1
where t1.OID not in (select t2.OID from table t2 where t2.name = t1.name and t2.lastname = t1.lastname and t2.OID > t1.OID)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32519127
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять неправильно
Код: plaintext
1.
2.
delete from table t1
where t1.OID in (select t2.OID from table t2 where t2.name = t1.name and t2.lastname = t1.lastname and t2.OID > t1.OID)

Прошу прощения, это из за расстройства от отсутствия джоинов
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32522321
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Разве наши слоны уже летают??? Значит летают! "
Это я про "отсутствие джоинов" 8)
Можно так. План наверняка будет красивее чем у варианта с подзапросом.
SELECT t1.name FROM
allobj t2 FULL JOIN allobj t1 ON t1.name =
t2.name where a2.oid>a1.oid;
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32522394
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shweik

Это я про "отсутствие джоинов"

А показать? Между прочим я говорил не о селекте. :)
А Ваш запрос я бы все таки попроще переписал, например так:
Код: plaintext
1.
2.
3.
SELECT t1.name FROM 
allobj t2 inner JOIN allobj t1 ON 
t1.name = t2.name and a2.oid>a1.oid;

Правда я не понимаю как этот селект может помочь удалить дубликаты :)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32522535
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу -короче незнал да еще и забыл что delete не понимает joinoв.
Сорри.
И судя по обсуждению этот TODO будет выполнен в PG 8.0 8-\
http://momjian.postgresql.org/cgi-bin/pgtodo?delete
Соответственно ничего получается только так:
delete from allobj where oid in (
SELECT t1.oid FROM allobj t2
inner JOIN allobj t1 ON t1.name = t2.name and a2.oid>a1.oid);
Впрочем планировщик и без явного join-a делает практически тоже самое 8)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32522629
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем планировщик и без явного join-a делает практически тоже самое 8)
Как нибудь выкрою время, посмотрю что там делает планировщик. :)
впрочем это уже оффтоп :)
...
Рейтинг: 0 / 0
как удалить из таблицы дублирующиеся строки?
    #32522630
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shweik

Кстати, в Вашем последнем примере лишний джоин ни к чему :) Подзапрос то уже есть.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как удалить из таблицы дублирующиеся строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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