Загрузить PDFЗагрузить PDF

Повторяющиеся строки в Oracle могут быть дифференцированы только с помощью их ‘RowId' (адрес строки).

  1. How.com.vn Русский: Step 1  Удалите строку с помощью rowid.
    Это самый простой способ удаления записи.
        SQL > select rowid,name from names;ROWID              NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom4 rows selected.SQL > delete from names where rowid='AABJnsAAGAAAdfOAAA';1 row deleted.SQL > commit;Commit complete.SQL > select rowid,name from names;ROWID              NAME------------------ --------------------AABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom3 rows selected.
  2. How.com.vn Русский: Step 2 Удалите все повторяющиеся строки, кроме одной.
      SQL > select name from names;NAME------------------------------AlanCarrieTomAlan4 rows selected.SQL > delete from names where name='Alan';2 rows deleted.SQL > commit;Commit complete.SQL > insert into names values ('Alan');1 row created.SQL > commit;Commit complete.SQL > select * from names;NAME------------------------------AlanCarrieTomrows selected.
  3. How.com.vn Русский: Step 3  Используйте функцию max или min на rowed и удалите все другие строки.
    В этом случае, если существуют несколько дубликатов, они будут удалены.
        SQL > select rowid,name from names;ROWID              NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alan5 rows selected.SQL > delete from names a2  where rowid > (select min(rowid) from names b3                 where b.name=a.name4                );2 rows deleted.SQL > select rowid,name from names;ROWID              NAME------------------ ------------------------------AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Tom3 rows selected.SQL > commit;Commit complete.}}</ul></li><li>Продублируйте линию 3 сверху и добавьте новое название столбца, если у вас есть несколько столбцов в таблице. Допустим, что у вас есть столбец возрастов, то команда будет следующей. <br><br>[[Image:Delete Duplicate Records in Oracle Step 4.jpg|center|550px]]</ul>{{CodeBox|<source lang="oracle8">SQL > select * from names;NAME                                  AGE------------------------------ ----------Alan                                   50Carrie                                 51Tom                                    52Alan                                   504 rows selected.SQL > delete from names a2  where rowid > (select min(rowid) from names b3                 where b.name=a.name4                   and b.age=a.age5                );1 row deleted.SQL > select * from names;NAME                                  AGE------------------------------ ----------Alan                                   50Carrie                                 51Tom                                    52rows selected.SQL > commit;Commit complete.
    Реклама

Предупреждения

  • Создайте резервную копию таблицы, чтобы сравнить и показать содержание таблицы до удаления чего-либо (если возникнут вопросы).
        SQL > create table alan.names_backup as select * from names;  Table created.
Реклама

Об этой статье

How.com.vn работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 13 человек(а). Количество просмотров этой статьи: 13 438.
Эту страницу просматривали 13 438 раз.

Была ли эта статья полезной?

⚠️ Disclaimer:

Content from Wiki How Русский language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.

Notices:
  • - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
  • - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
  • - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
  • - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.

Реклама