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

Мазмуну:

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

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

Video: Oracle'дагы кайталанма жазууларды жок кылуунун 4 жолу
Video: Сиздин мээңиз кандай иштейт👀??? Логикалык суроолор🤪!!! 2024, Май
Anonim

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

Кадамдар

4 -метод 1: Дубликатын аныктоо

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

Кадам 1. Кайталанганды аныктаңыз

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

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

2 -кадам. "Аттары" аттуу колонкадан аныктоо

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

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

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

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

column_name, count (column_name) таблицадан группанын_эсеби боюнча count (column_name)> 1;

Метод 2 4: Бир дубликатты жок кылуу

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ден" кийин "киргизиңиз" аттардан алып салуу a кайда rowid> (b.name = a.name аттарынан min (rowid) тандаңыз); " кайталанган жазууларды жок кылуу.

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

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

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

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

"SQLден" кийин "аттардан * тандаңыз;" киргизиңиз; " сенин катарыңды көрүү үчүн.

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

Кадам 2. Алардын тилкесин аныктоо менен кайталанган саптарды жок кылыңыз

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

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

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

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