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