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

Съдържание:

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

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

Видео: 4 начина за изтриване на дублирани записи в Oracle
Видео: Microsoft Office бесплатно на любом устройстве 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“(съкращение от Standard Query Language) въведете „select name from names“.

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

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

След "SQL" въведете "delete from names where name = 'Alan';." Трябва да се отбележи, че изписването с главни букви е важно тук, така че тази стъпка може да изтрие всички редове, наречени "Alan". След "SQL" въведете "commit"

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

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

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

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

Стъпка 4. Преглед на новия списък

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

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

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

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

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

След "SQL" въведете "select rowid, name from names;."

Изтрийте дублирани записи в 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“въведете „select * from names;“за да може да види линията.

Изтрийте дублирани записи в 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> изберете * от имена; ИМЕ ВЪЗРАСТ ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 избрани редове. SQL> изтриване от имена a where rowid> (изберете min (rowid) от имена b където b.name = a.name и b.age = a.age); редът е изтрит. SQL> изберете * от имена; ИМЕНА ВЪЗРАСТ ------------------------------ ---------- Alan 50 Citra 51 Tomi Избрани са 52 реда. SQL> коммити; Ангажиментът е завършен.

Внимание

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

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

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