Oracleда иштеп жүргөндө, кээ бир жазууларыңызда дубликаттар бар экенин көрө аласыз. Бул кайталанма саптарды аныктоо жана анын RowID же катар дарегин колдонуу менен жок кыла аласыз. Баштоодон мурун, жазууларды өчүргөндөн кийин аларга шилтеме кылууңуз керек болгон учурда, резервдик таблицаны түзүшүңүз керек.
Кадамдар
4 -метод 1: Дубликатын аныктоо
Кадам 1. Кайталанганды аныктаңыз
Бул учурда, "Алан" кайталанган мисалын аныктаңыз. Төмөндөгү SQLди киргизип, жок кылгыңыз келген жазуулар чындыгында кайталангандыгын текшериңиз.
2 -кадам. "Аттары" аттуу колонкадан аныктоо
"" Аталыштар "аттуу тилкенин мисалында," column_name "дегенди Аттар менен алмаштырмаксыз.
Кадам 3. Башка мамычалардан аныктоо
Эгерде сиз дубликатты башка тилке менен аныктоого аракет кылып жаткан болсоңуз, мисалы, Аландын жашына, анын атына эмес, "column_name" ордуна "Ages" дегенди жазмаксыз.
column_name, count (column_name) таблицадан группанын_эсеби боюнча count (column_name)> 1;
Метод 2 4: Бир дубликатты жок кылуу
Кадам 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ден" кийин "киргизиңиз" аттардан алып салуу a кайда rowid> (b.name = a.name аттарынан min (rowid) тандаңыз); " кайталанган жазууларды жок кылуу.
Кадам 3. Кайталанганын текшериңиз
Жогорудагыларды бүтүргөндөн кийин, буйруктар дагы эле "кайыктарды, аттарды аталышын тандап алуу" жазуусу менен сизде дагы эле кайталанган жазуулар бар -жогун текшерет. анан "милдеттенме".
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" "киргизгенден кийин" киргизиңиз "адрестерден a кайда rowid> (b аттарынан min (rowid) тандап, b.name = a.name жана b.age = a.age);" кайталанган жазууларды жок кылуу.
Кадам 3. Кайталанганын текшериңиз
Жогорудагы кадамдарды аткаргандан кийин "аттардан тандоо *" киргизиңиз; анан кайталанма жазууларды ийгиликтүү жок кылганыңызды текшерүү үчүн "милдеттенме" алыңыз.
SQL> аттардан * тандаңыз; ЫСЫМ ЖАШЫ ------------------------------ ---------- Алан 50 Кэрри 51 Том 52 Алан 50 саптар тандалды. SQL> аттардан өчүрүү a кайда rowid> (min (rowid) деген аттарды тандаңыз b жерде b.name = a.name жана b.age = a.age); катар жок кылынды. SQL> аттардан * тандаңыз; ЫСЫМ ЖАШЫ ------------------------------ ---------- Алан 50 Кэрри 51 Том 52 катар тандалды. SQL> милдеттенме; Милдеттенме аяктады.
Эскертүүлөр
-
Өзүңүздүн кирүүңүздө резервдик таблицаны түзүңүз, аны жок кылуудан мурун эмне болгонун көрсөтүү үчүн колдоно аласыз (эгер суроолор болсо).
SQL> аттарды тандоо * катары stol alan.names_backup түзүү; Таблица түзүлдү.