Oracle'дагы кайталанма жазууларды жок кылуунун 4 жолу

Oracle'дагы кайталанма жазууларды жок кылуунун 4 жолу
Oracle'дагы кайталанма жазууларды жок кылуунун 4 жолу

Мазмуну:

Anonim

Oracleда иштеп жатып, кээ бир жазуулардан дубликаттарды таба аласыз. Сиз кайталанма саптарды аныктап жана тиешелүү RowID лакап аты дарегин колдонуу менен алып салсаңыз болот. Баштоодон мурун, жазуу жок кылынгандан кийин маалымдама керек болсо, резервдик таблицаны түзүңүз.

Кадам

Метод 4: Дубликаттарды аныктоо

Oracle 1деги кайталанма жазууларды жок кылыңыз
Oracle 1деги кайталанма жазууларды жок кылыңыз

Кадам 1. Дубликаттарды аныктоо

Бул мисалда биз "Аландын" дубликатын аныктайбыз. Төмөндөгү SQLди киргизип, жок кылынуучу жазуулар чынында эле кайталангандыгын текшериңиз.

Oracle 2деги кайталанма жазууларды жок кылыңыз
Oracle 2деги кайталанма жазууларды жок кылыңыз

Кадам 2. "Аты" аттуу тилкеден аныктаңыз

Эгерде тилкеде "Аты" аталышы бар болсо, анда "column_name" дегенди Name менен алмаштыруу керек.

Oracle 3 -көчүрмөсүндөгү жазууларды жок кылыңыз
Oracle 3 -көчүрмөсүндөгү жазууларды жок кылыңыз

Кадам 3. Башка мамычаларды аныктоо

Эгерде сиз ар түрдүү тилкелерден дубликаттарды аныктоого аракет кылып жатсаңыз, мисалы, Аландын жашынын атын ордуна, "column_name" ордуна "Age" деп жазыңыз.

column_name, count (column_name) таблица тобунан count (column_name)> 1 болгон sütun_name боюнча тандоо;

Метод 2 2: Жалгыз дубликаттарды алып салуу

Oracle 4 -көчүрмөсүндөгү рекорддорду жок кылыңыз
Oracle 4 -көчүрмөсүндөгү рекорддорду жок кылыңыз

Кадам 1. "Аттардан аталышты" тандаңыз

"SQLден" кийин (Стандарттык суроо тили үчүн кыска), "аттардан ат тандоо" деп киргизиңиз.

Oracle 5 -кадамдагы кайталанган жазууларды жок кылыңыз
Oracle 5 -кадамдагы кайталанган жазууларды жок кылыңыз

Кадам 2. Кайталанма аттары бар бардык катарларды жок кылыңыз

"SQLден" кийин "name = 'Alan';. Бул жерде "Алан" деп аталган бардык саптарды өчүрүү үчүн капитализация чоң мааниге ээ экенин белгилей кетүү керек. "SQLден" кийин "милдеттенмени" киргизиңиз

Oracle 6дагы кайталанма жазууларды жок кылыңыз
Oracle 6дагы кайталанма жазууларды жок кылыңыз

Кадам 3. Дубликатсыз саптарды кайра киргизиңиз

Эми сиз бардык саптарды өчүрүп, аларды "Алан" менен алмаштырганыңыздан кийин, "атынын маанилерине кыстаруу ('Алан');" деп жазыңыз. "SQLден" кийин, жаңы сапты түзүү үчүн "милдеттенмени" киргизиңиз.

Oracle 7деги кайталанма жазууларды жок кылыңыз
Oracle 7деги кайталанма жазууларды жок кылыңыз

Кадам 4. Жаңы тизмени караңыз

Жогорудагы кадамдарды аяктагандан кийин, "аттардан тандоо *" киргизип, кайталанма жазуулар жок экендигин текшере аласыз.

SQL> аттардан ат тандоо; АТЫ ------------------------------ Алан Цитра Томи Алан Барис тандалды. SQL> аттардан өчүрүү = name = 'Alan'; Сап жок кылынат. SQL> милдеттенмелер; / Милдеттенме аяктады. SQL> аттардын маанилерине кыстаруу ('Алан'); катар түзүлдү. SQL> милдеттенмелер; Милдеттенме аяктады. SQL> аттардан * тандаңыз; АТЫ ------------------------------ Алан Цитра Томи катарлары тандалды.

Метод 3 3: Бир нече дубликаттарды алып салуу

Oracle 8деги кайталанма жазууларды жок кылыңыз
Oracle 8деги кайталанма жазууларды жок кылыңыз

Кадам 1. Жок кылгыңыз келген RowIDди тандаңыз

"SQLден" кийин "rowid тандоо, аттардан ат коюу;."

9 -кадамда кайталанган жазууларды жок кылыңыз
9 -кадамда кайталанган жазууларды жок кылыңыз

Кадам 2. Дубликаттарды алып салуу

"SQLден" кийин "name from delete a where rowid> (b аттарынан min (rowid) тандап, b.name = a.name) киргизиңиз;" дубликаттарды алып салуу.

10 -кадамда кайталанган жазууларды жок кылыңыз
10 -кадамда кайталанган жазууларды жок кылыңыз

Кадам 3. Кайталанганын текшериңиз

Жогорудагы кадамдарды аяктагандан кийин, "rowid, name from names;" дегенди киргизүү менен дубликаттарды текшериңиз; анда "милдеттенме".

SQL> rowid, аттардан ат тандоо; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Алан AABJnsAAGAAAdfOAAB Алан AABJnsAAGAAAdfOAAC Кэрри AABJnsAAGAAAdfOAAD Том AABJnsAAGAAAdfOAAF Алан катарлары тандалган. SQL> аттардан өчүрүү a кайда rowid> (b аталыштарынан min (rowid) тандоо b кайда b.name = a.name); саптар өчүрүлдү. SQL> rowid, аттардан атын тандоо; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Алан AABJnsAAGAAAdfOAAC Кэрри AABJnsAAGAAAdfOAAD Том катарлары тандалды. SQL> милдеттенмелер; Милдеттенме аяктады.

Метод 4 4: Колонкалар боюнча саптарды жок кылуу

Oracle 11деги кайталанма жазууларды жок кылыңыз
Oracle 11деги кайталанма жазууларды жок кылыңыз

Кадам 1. Катарды тандаңыз

"SQLден" кийин "аталыштарынан * тандаңыз." линияны көрө билүү үчүн.

Oracle 12 -кадамдагы кайталанма жазууларды жок кылыңыз
Oracle 12 -кадамдагы кайталанма жазууларды жок кылыңыз

Кадам 2. Алардын мамыларын аныктоо менен кайталанма саптарды алып салуу

"SQL" "киргизгенден кийин" киргизиңиз ", а жерден rowid> (min (rowid) деген аттарды тандаңыз b жерде b.name = a.name жана b.age = a.age);" кайталанган жазууларды алып салуу үчүн.

Oracle 13 -жылы кайталанган жазууларды жок кылыңыз
Oracle 13 -жылы кайталанган жазууларды жок кылыңыз

Кадам 3. Кайталанганын текшериңиз

Жогорудагы кадамдарды аткарганыңыздан кийин, "select * names from" киргизиңиз; анда дубликаттар чындыгында алынып салынганын көрүү үчүн "милдеттенме" алыңыз.

SQL> аттардан * тандаңыз; ЫСЫМ ЖАШЫ ------------------------------ ---------- Алан 50 Citra 51 Томи 52 Алан 50 саптар тандалды. SQL> аттардан өчүрүү a кайда rowid> (min (rowid) деген аттарды тандаңыз b жерде b.name = a.name жана b.age = a.age); катар жок кылынды. SQL> аттардан * тандаңыз; NAME AGE ------------------------------ ---------- Алан 50 Citra 51 Tomi 52 катар тандалды. SQL> милдеттенмелер; Милдеттенме аяктады.

Эскертүү

  • Кирүүңүздө кайталанма таблица түзүңүз, ал эч кандай маалымат өчүрүлбөгөндө (эгер сизде кандайдыр бир суроолор болсо) мазмунга шилтеме катары колдонулушу мүмкүн.

    SQL> аттарды тандоо * катары stol alan.names_backup түзүү; Таблица түзүлдү.

Сунушталууда: