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

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

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

Кадам 3. Башка мамычаларды аныктоо
Эгерде сиз ар түрдүү тилкелерден дубликаттарды аныктоого аракет кылып жатсаңыз, мисалы, Аландын жашынын атын ордуна, "column_name" ордуна "Age" деп жазыңыз.
column_name, count (column_name) таблица тобунан count (column_name)> 1 болгон sütun_name боюнча тандоо;
Метод 2 2: Жалгыз дубликаттарды алып салуу

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

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

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

Кадам 4. Жаңы тизмени караңыз
Жогорудагы кадамдарды аяктагандан кийин, "аттардан тандоо *" киргизип, кайталанма жазуулар жок экендигин текшере аласыз.
SQL> аттардан ат тандоо; АТЫ ------------------------------ Алан Цитра Томи Алан Барис тандалды. SQL> аттардан өчүрүү = name = 'Alan'; Сап жок кылынат. SQL> милдеттенмелер; / Милдеттенме аяктады. SQL> аттардын маанилерине кыстаруу ('Алан'); катар түзүлдү. SQL> милдеттенмелер; Милдеттенме аяктады. SQL> аттардан * тандаңыз; АТЫ ------------------------------ Алан Цитра Томи катарлары тандалды.
Метод 3 3: Бир нече дубликаттарды алып салуу

Кадам 1. Жок кылгыңыз келген RowIDди тандаңыз
"SQLден" кийин "rowid тандоо, аттардан ат коюу;."

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

Кадам 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: Колонкалар боюнча саптарды жок кылуу

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

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

Кадам 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 түзүү; Таблица түзүлдү.