Необходимо удалить дубликаты

Имеется таблица без первичного ключа. Известно, что в таблице имеется за двоение данных. Необходимо удалить дубликаты из таблицы.

Пример данных:

CREATE TABLE T (A INTEGER, B INTEGER) NOLOGGING;

INSERT INTO t (a, b) VALUES (1, 1);
INSERT INTO t (a, b) VALUES (2, 2);
INSERT INTO t (a, b) VALUES (2, 2);
INSERT INTO t (a, b) VALUES (3, 3);
INSERT INTO t (a, b) VALUES (3, 3);
INSERT INTO t (a, b) VALUES (3, 3);

COMMIT WORK;
/

Варианты запроса:

DELETE FROM t
 WHERE ROWID NOT IN (SELECT MAX(ROWID) FROM t GROUP BY t.a, t.b);
/

DELETE FROM t
 WHERE ROWID NOT IN (SELECT DISTINCT first_value(ROWID) over(PARTITION BY t.a, t.b)
                       FROM t);
/

Результат запроса:

A	B
1	1
2	2
3	3

P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776

Tags: ,

Comments are closed.