4 начина за изтриване на дублирани записи в Oracle

Съдържание:

4 начина за изтриване на дублирани записи в Oracle
4 начина за изтриване на дублирани записи в Oracle

Видео: 4 начина за изтриване на дублирани записи в Oracle

Видео: 4 начина за изтриване на дублирани записи в Oracle
Видео: Настя и сборник весёлых историй 2024, Април
Anonim

Когато работите в Oracle, може да откриете, че някои от вашите записи имат дубликати. Можете да изтриете тези дублирани редове, като ги идентифицирате и използвате неговия RowID или адрес на ред. Преди да започнете, трябва да създадете резервна таблица в случай, че трябва да ги позовавате, след като сте изтрили записи.

Стъпки

Метод 1 от 4: Идентифициране на вашия дубликат

Изтриване на дублирани записи в Oracle Стъпка 1
Изтриване на дублирани записи в Oracle Стъпка 1

Стъпка 1. Идентифицирайте дубликата

В този случай идентифицирайте примерния дубликат, „Алън“. Уверете се, че записите, които се опитвате да изтриете, всъщност са дубликати, като въведете SQL по -долу.

Изтрийте дублирани записи в Oracle Стъпка 2
Изтрийте дублирани записи в Oracle Стъпка 2

Стъпка 2. Идентифициране от колона, наречена „Имена

„В екземпляра на колона с име„ Имена “бихте заменили„ име на колона “с имена.

Изтрийте дублирани записи в Oracle Стъпка 3
Изтрийте дублирани записи в Oracle Стъпка 3

Стъпка 3. Идентифициране от други колони

Ако се опитвате да идентифицирате дубликата по различна колона, например възрастта на Алън, а не името му, бихте въвели „Възрасти“на мястото на „име на колона“и т.н.

изберете име на колона, брой (име на колона) от групата на таблиците по име на колона с брой (име на колона)> 1;

Метод 2 от 4: Изтриване на един дубликат

Изтрийте дублирани записи в Oracle Стъпка 4
Изтрийте дублирани записи в Oracle Стъпка 4

Стъпка 1. Изберете „име от имена

„След„ SQL “, което означава стандартния език за заявки, въведете„ изберете име от имена “.

Изтрийте дублирани записи в Oracle Стъпка 5
Изтрийте дублирани записи в Oracle Стъпка 5

Стъпка 2. Изтрийте всички редове с дублирано име

След "SQL" въведете "delete от имена, където name = 'Alan';." Обърнете внимание, че главни букви са важни тук, така че това ще изтрие всички редове, наречени "Алън". След "SQL" въведете "commit".

Изтрийте дублирани записи в Oracle Стъпка 6
Изтрийте дублирани записи в Oracle Стъпка 6

Стъпка 3. Въведете реда без дубликат

Сега, след като сте изтрили всички редове с примерното име "Alan", можете да вмъкнете един обратно, като въведете "insert into name values ('Alan');." След „SQL“въведете „commit“, за да създадете новия си ред.

Изтрийте дублирани записи в Oracle Стъпка 7
Изтрийте дублирани записи в Oracle Стъпка 7

Стъпка 4. Вижте новия си списък

След като изпълните горните стъпки, можете да проверите дали вече нямате дублирани записи, като въведете „изберете * от имената“.

SQL> изберете име от имена; ИМЕ ------------------------------ Алън Кари Том Алън избрани редове. SQL> изтриване от имена, където name = 'Alan'; редовете са изтрити. SQL> коммит; Ангажиментът е завършен. SQL> вмъкване в имена стойности ('Alan'); редът е създаден. SQL> коммит; Ангажиментът е завършен. SQL> изберете * от имена; ИМЕ ------------------------------ Алан Кари Том избрани редове.

Метод 3 от 4: Изтриване на множество дубликати

Изтрийте дублирани записи в Oracle Стъпка 8
Изтрийте дублирани записи в Oracle Стъпка 8

Стъпка 1. Изберете RowID, който искате да изтриете

След "SQL" въведете "изберете ред, име от имена;."

Изтрийте дублирани записи в Oracle Стъпка 9
Изтрийте дублирани записи в Oracle Стъпка 9

Стъпка 2. Изтрийте дубликата

След "SQL" въведете "изтриване от имена a where rowid> (изберете min (rowid) от имена b, където b.name = a.name);" за изтриване на дублиращи се записи.

Изтрийте дублирани записи в Oracle Стъпка 10
Изтрийте дублирани записи в Oracle Стъпка 10

Стъпка 3. Проверете за дубликати

След като изпълните горното, командите проверяват дали все още имате дублирани записи, като въведете „select rowid, name from names;“и след това "ангажиране".

SQL> изберете ред, име от имена; ROWID ИМЕ ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Том AABJnsAAGAAAdfOAAF Избрани са редове Alan. SQL> изтриване от имена a where rowid> (изберете min (rowid) от имена b където b.name = a.name); редовете са изтрити. SQL> изберете ред, име от имена; ROWID ИМЕ ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Алън AABJnsAAGAAAdfOAAC Кари AABJnsAAGAAAdfOAAD Избрани са Том редове. SQL> коммит; Ангажиментът е завършен.

Метод 4 от 4: Изтриване на редове с колони

Изтрийте дублирани записи в Oracle Стъпка 11
Изтрийте дублирани записи в Oracle Стъпка 11

Стъпка 1. Изберете вашите редове

След „SQL“въведете „изберете * от имената;“за да видите вашите редове.

Изтрийте дублирани записи в Oracle Стъпка 12
Изтрийте дублирани записи в Oracle Стъпка 12

Стъпка 2. Изтрийте дублиращите се редове, като идентифицирате тяхната колона

След "SQL" "въведете" изтрийте от имена a where rowid> (изберете min (rowid) от имена b където b.name = a.name и b.age = a.age); " за да изтриете дублиращите се записи.

Изтрийте дублирани записи в Oracle Стъпка 13
Изтрийте дублирани записи в Oracle Стъпка 13

Стъпка 3. Проверете за дубликати

След като изпълните горните стъпки, въведете „изберете * от имената;“и след това "ангажиране", за да проверите дали сте изтрили успешно дублиращите се записи.

SQL> изберете * от имена; ИМЕНА ВЪЗРАСТ ------------------------------ ---------- Алън 50 Кари 51 Том 52 Алън 50 избрани редове. SQL> изтриване от имена a where rowid> (изберете min (rowid) от имена b където b.name = a.name и b.age = a.age); редът е изтрит. SQL> изберете * от имена; ИМЕНА ВЪЗРАСТ ------------------------------ ---------- Алън 50 Кари 51 Том Избрани са 52 реда. SQL> коммит; Ангажиментът е завършен.

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

  • Създайте резервна таблица в собствения си вход, която можете да използвате, за да покажете какво е имало преди изтриване (в случай, че има въпроси).

    SQL> създайте таблица alan.names_backup като изберете * от имена; Таблицата е създадена.

Препоръчано: