Як видаляти повторювані записи в oracle

Повторювані рядки в Oracle можуть бути диференційовані тільки за допомогою їх ‘RowId` (адреса рядка).

кроки

Відео: повторюються значення в Excel - знайти, виділити або видалити дублікати в Excel

Зображення з назвою Delete Duplicate Records in Oracle Step 1
1
Видаліть рядок за допомогою rowid. Це найпростіший спосіб видалення запису.
SQL gt; SELECT ROWID,name FROM names-ROWID NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom4 ROWS selected.SQL gt; DELETE FROM names WHERE ROWID=`AABJnsAAGAAAdfOAAA`-1 ROW deleted.SQL gt; COMMIT-COMMIT complete.SQL gt; SELECT ROWID,name FROM names-ROWID NAME------------------ --------------------AABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom3 ROWS selected.


  • Зображення з назвою Delete Duplicate Records in Oracle Step 2
    2
    Видаліть всі повторювані рядки, крім однієї.

    Відео: Пошук і видалення файлів дублікатів | PC-Lessons.ru

    SQL gt; SELECT name FROM names-NAME------------------------------AlanCarrieTomAlan4 ROWS selected.SQL gt; DELETE FROM names WHERE name=`Alan`-2 ROWS deleted.SQL gt; COMMIT-COMMIT complete.SQL gt; INSERT INTO names VALUES (`Alan`)-1 ROW created.SQL gt; COMMIT-COMMIT complete.SQL gt; SELECT * FROM names-NAME------------------------------AlanCarrieTomROWS selected.
  • Зображення з назвою Delete Duplicate Records in Oracle Step 3


    3
    Використовуйте функцію max або min на rowed і видаліть всі інші рядки. В цьому випадку, якщо існують кілька дублікатів, вони будуть видалені.
    SQL gt; SELECT ROWID,name FROM names-ROWID NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alan5 ROWS selected.SQL gt; DELETE FROM names a2WHERE ROWID gt; (SELECT MIN(ROWID) FROM names b3 WHERE b.name=a.name4)-2 ROWS deleted.SQL gt; SELECT ROWID,name FROM names-ROWID NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom3 ROWS selected.SQL gt; COMMIT-COMMIT complete.}} ulgt;ligt;lt;ligt;продублюйте лінію 3 зверху і додайте нову назву стовпця, якщо у вас є кілька стовпців в таблиці. Припустимо, що у вас є стовпець віку, то команда буде наступною. lt;brgt; lt;brgt;[[Image:DELETE Duplicate Records IN Oracle Step 4.jpg|center|550px]] ulgt;{{CodeBox|lt;source lang="oracle8"gt;SQL gt; SELECT * FROM names-NAME AGE------------------------------ ----------Alan 50Carrie 51Tom52Alan 504 ROWS selected.SQL gt; DELETE FROM names a2WHERE ROWID gt; (SELECT MIN(ROWID) FROM names b3 WHERE b.name=a.name4AND b.age=a.age5)-1 ROW deleted.SQL gt; SELECT * FROM names-NAME AGE------------------------------ ----------Alan 50Carrie 51Tom52ROWS selected.SQL gt; COMMIT-COMMIT complete.
  • попередження

    • Створіть резервну копію таблиці, щоб порівняти і показати вміст таблиці до видалення чого-небудь (якщо виникнуть питання).
    SQL gt; CREATE TABLE alan.names_backup AS SELECT * FROM names-TABLE created.


    Увага, тільки СЬОГОДНІ!

    Увага, тільки СЬОГОДНІ!
    » » Як видаляти повторювані записи в oracle