powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / удалить полные дубликаты в таблице без ПК
2 сообщений из 2, страница 1 из 1
удалить полные дубликаты в таблице без ПК
    #40092655
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стандартная задача
https://wiki.postgresql.org/wiki/Deleting_duplicates

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DELETE FROM tablename
WHERE id IN (
    SELECT
        id
    FROM (
        SELECT
            id,
            row_number() OVER w as rnum
        FROM tablename
        WINDOW w AS (
            PARTITION BY column1, column2, column3
            ORDER BY id
        )
    ) t
WHERE t.rnum > 1);



в моем случае
SELECT migration_id, ROW_NUMBER()
OVER(PARTITION by migration_id,user_id ORDER BY user_id) AS rank1 -- 1,2
from TCER0_EMPLOYEE_DATA t0
where t0.migration_id = 43122

rank1 : 1,2
но удалеить то как если ВСЕ ПОЛЯ одинаковые нет там Шв
( Я конечно могу выбрать в темм. таблицу с rank1 =1

удалить и воставить потом
)
но интересно есть ли какой способ красивей ?


зы только не надо мне писать что каждая таблица должна иметь ПК (хотя так оно и есть)
не каждая вот - у меня таких 20+ они используются для импорта и все рабоатет
но вот произошло 1 раз задвоение - я по быстрому подчиситил но вопрос остался
...
Рейтинг: 0 / 0
удалить полные дубликаты в таблице без ПК
    #40092659
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все нашел сам
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DELETE FROM TCER0_EMPLOYEE_DATA
USING 
(
SELECT ctid as ctid1 , migration_id
, ROW_NUMBER() OVER(PARTITION by migration_id,user_id ORDER BY user_id) AS rank1 -- 1,2
from TCER0_EMPLOYEE_DATA t0
where t0.migration_id = 41422 -- 43122 
) ZZ
WHERE rank1 > 1
RETURNING  zz.migration_id , rank1
;



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


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