Докато работите в Oracle, можете да намерите дубликати на някои записи. Можете да премахнете дублиращи се редове, като ги идентифицирате и използвате съответния адрес на ред на псевдоним на RowID. Преди да започнете, създайте резервна таблица в случай, че имате нужда от препратка след изтриването на записа.
Стъпка
Метод 1 от 4: Идентифициране на дубликати
Стъпка 1. Идентифицирайте дубликати
В този пример идентифицираме дублиращия се „Алън“. Уверете се, че записите, които ще бъдат изтрити, наистина са дубликати, като въведете SQL по -долу.
Стъпка 2. Определете от колоната, озаглавена „Име“
В случай, че колоната има заглавие „Име“, трябва да замените „име на колона“с Име.
Стъпка 3. Определете другите колони
Ако се опитвате да идентифицирате дубликати от различни колони, например възрастта на Алън вместо името му, въведете „Възраст“вместо „име на колона“и т.н.
изберете име на колона, преброяване (име на колона) от групата на таблицата по име на колона с брой (име на колона)> 1;
Метод 2 от 4: Премахване на единични дубликати
Стъпка 1. Изберете „име от имена“
След „SQL“(съкращение от Standard Query Language) въведете „select name from names“.
Стъпка 2. Изтрийте всички редове с дублирани имена
След "SQL" въведете "delete from names where name = 'Alan';." Трябва да се отбележи, че изписването с главни букви е важно тук, така че тази стъпка може да изтрие всички редове, наречени "Alan". След "SQL" въведете "commit"
Стъпка 3. Въведете отново редове без дубликати
Сега, след като сте изтрили всички редове и сте ги заменили с „Alan“, попълнете отново един, като въведете „insert into name values ('Alan');.“След „SQL“въведете „commit“, за да създадете нов ред.
Стъпка 4. Преглед на новия списък
След като изпълните стъпките по -горе, можете да проверите дали няма повече дублиращи се записи, като въведете „select * from names“.
SQL> изберете име от имена; ИМЕ ------------------------------ Алан Ситра Томи Алън Барис е избран. SQL> изтриване от имена, където name = 'Alan'; Редът се изтрива. SQL> коммити; / Ангажирането завършено. SQL> вмъкване в имена стойности ('Alan'); редът е създаден. SQL> коммити; Ангажиментът е завършен. SQL> изберете * от имена; ИМЕ ------------------------------ Избрани редове на Алън Ситра Томи.
Метод 3 от 4: Премахване на множество дубликати
Стъпка 1. Изберете RowID, който искате да изтриете
След "SQL" въведете "select rowid, name from names;."
Стъпка 2. Премахнете дубликатите
След "SQL" въведете "изтриване от имена a where rowid> (изберете min (rowid) от имена b където b.name = a.name);" за премахване на дубликати.
Стъпка 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: Изтриване на редове по колони
Стъпка 1. Изберете реда
След „SQL“въведете „select * from names;“за да може да види линията.
Стъпка 2. Премахнете дублиращите се редове, като идентифицирате техните колони
След "SQL" "въведете" изтрийте от имена a where rowid> (изберете min (rowid) от имена b, където b.name = a.name и b.age = a.age); " за премахване на дублиращи се записи.
Стъпка 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 като изберете * от имена; Таблицата е създадена.