Имеется таблица без первичного ключа. Известно, что в таблице имеется за двоение данных. Необходимо удалить дубликаты из таблицы.
Пример данных:
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