Oracle -dagi takroriy yozuvlarni o'chirishning 4 usuli

Mundarija:

Oracle -dagi takroriy yozuvlarni o'chirishning 4 usuli
Oracle -dagi takroriy yozuvlarni o'chirishning 4 usuli

Video: Oracle -dagi takroriy yozuvlarni o'chirishning 4 usuli

Video: Oracle -dagi takroriy yozuvlarni o'chirishning 4 usuli
Video: Fayllarni kichraytirish - ZIP va RAR qanday ishlaydi? @Texnoplov 2024, May
Anonim

Oracle -da ishlayotganda, ba'zi yozuvlarda dublikatlarni topishingiz mumkin. Ikki nusxadagi qatorlarni ularni aniqlash va tegishli RowID taxallusli satr manzilidan foydalanib olib tashlashingiz mumkin. Ishni boshlashdan oldin, yozuv o'chirilgandan keyin sizga ma'lumot kerak bo'lsa, zaxira jadvalini yarating.

Qadam

4 -usul 1: dublikatlarni aniqlash

Oracle 1 -dagi takroriy yozuvlarni o'chirish
Oracle 1 -dagi takroriy yozuvlarni o'chirish

Qadam 1. Dublikatlarni aniqlang

Bu misolda biz "Alan" dublikatini aniqlaymiz. Quyidagi SQL -ni kiritib, o'chiriladigan yozuvlar haqiqatan ham takrorlanganligiga ishonch hosil qiling.

Oracle 2 -dagi takroriy yozuvlarni o'chirish
Oracle 2 -dagi takroriy yozuvlarni o'chirish

Qadam 2. "Ism" sarlavhali ustundan aniqlang

Agar ustunda "Ism" sarlavhasi bo'lsa, "ustun_ nomi" ni Ism bilan almashtirish kerak.

Oracle 3 -dagi takroriy yozuvlarni o'chirish
Oracle 3 -dagi takroriy yozuvlarni o'chirish

3 -qadam. Boshqa ustunlarni aniqlang

Agar siz turli ustunlardagi dublikatlarni aniqlamoqchi bo'lsangiz, masalan, ismining o'rniga Alanning yoshi, "column_name" o'rniga "Age" kiriting va hokazo.

jadvallar guruhidan ustun_ nomi, hisoblash (ustun_ nomi) ni tanlang, ustunlar_anog'iga ko'ra soni (ustun_ nomi)> 1;

4 -usul 2: yagona dublikatlarni olib tashlash

Oracle 4 -dagi takroriy yozuvlarni o'chirish
Oracle 4 -dagi takroriy yozuvlarni o'chirish

Qadam 1. "Ismlardan ism" ni tanlang

"SQL" dan so'ng (standart so'rovlar tili qisqasi) "ismlardan nom tanlash" ni kiriting.

Oracle 5 dagi takroriy yozuvlarni o'chirish
Oracle 5 dagi takroriy yozuvlarni o'chirish

Qadam 2. Takroriy nomli barcha qatorlarni o'chirib tashlang

"SQL" dan keyin "name = 'Alan'; nomlaridan o'chirish" ni kiriting. Ta'kidlash joizki, bu erda kapitallashtirish muhim, shuning uchun bu qadam "Alan" nomli barcha qatorlarni o'chirib tashlashi mumkin. "SQL" dan keyin "majburiyat" kiriting

Oracle 6 -dagi takroriy yozuvlarni o'chirish
Oracle 6 -dagi takroriy yozuvlarni o'chirish

Qadam 3. Dublikatlarsiz qatorlarni qayta kiriting

Endi siz barcha qatorlarni o'chirib tashladingiz va ularni "Alan" bilan almashtirdingiz, "ism qiymatlarini kiritish (" Alan "); ni to'ldirib, birini to'ldiring. "SQL" dan so'ng, yangi qator yaratish uchun "majburiyat" kiriting.

Oracle 7 -dagi takroriy yozuvlarni o'chirish
Oracle 7 -dagi takroriy yozuvlarni o'chirish

Qadam 4. Yangi ro'yxatni ko'rish

Yuqoridagi amallarni bajarganingizdan so'ng, nomlardan tanlash * ni kiritib, takroriy yozuvlar yo'qligini tekshirishingiz mumkin.

SQL> ismlardan nom tanlash; NOMI ------------------------------ Alan Citra Tomi Alan Baris tanlandi. SQL> nomlardan o'chirish, bu erda name = 'Alan'; Chiziq o'chiriladi. SQL> majburiyatlarni bajaradi; / Majburiy bajarildi. SQL> ismlar qiymatlarini kiritish ('Alan'); qator yaratildi. SQL> majburiyatlarni bajaradi; Majburiyat tugadi. SQL> nomlardan * ni tanlang; NAME ------------------------------ Alan Citra Tomi qatorlari tanlangan.

3 -usul 4: Bir nechta dublikatlarni olib tashlash

Oracle 8 -dagi takroriy yozuvlarni o'chirish
Oracle 8 -dagi takroriy yozuvlarni o'chirish

Qadam 1. O'chirmoqchi bo'lgan RowID -ni tanlang

"SQL" dan keyin "rowid ni tanlang, ismlardan ism;." Kiriting.

Oracle 9 -dagi takroriy yozuvlarni o'chirish
Oracle 9 -dagi takroriy yozuvlarni o'chirish

Qadam 2. Dublikatlarni olib tashlang

"SQL" dan keyin "nomlardan o'chirish a qaerda rowid> (b nomlaridan min (rowid) ni tanlang b qaerda b.name = a.name) kiriting;" dublikatlarni olib tashlash uchun.

Oracle 10 -dagi takroriy yozuvlarni o'chirish
Oracle 10 -dagi takroriy yozuvlarni o'chirish

Qadam 3. dublikatlarini tekshiring

Yuqoridagi amallarni bajarganingizdan so'ng, "rowid, name from names;" nomini kiritib, dublikatlarni tekshiring. keyin "majburlash".

SQL> rowid ni tanlang, ismlardan ism; ROWID NOMI ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Kerri AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan qatorlari tanlangan. SQL> nomlardan o'chirish a qaerda rowid> (b nomlaridan min (rowid) ni tanlang b bu erda b.name = a.name); qatorlar o'chirildi. SQL> rowid ni tanlang, ismlardan ism; ROWID NOMI ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Kerri AABJnsAAGAAAdfOAAD Tom qatorlari tanlangan. SQL> majburiyatlarni bajaradi; Majburiyat tugadi.

4 -usul 4: ustunlar bo'yicha satrlarni o'chirish

Oracle 11 -dagi takroriy yozuvlarni o'chirish
Oracle 11 -dagi takroriy yozuvlarni o'chirish

Qadam 1. qatorni tanlang

"SQL" dan keyin "nomlardan * ni tanlang;" chiziqni ko'ra olish.

Oracle 12 -dagi takroriy yozuvlarni o'chirish
Oracle 12 -dagi takroriy yozuvlarni o'chirish

Qadam 2. Ustunlarini aniqlab, takrorlanadigan qatorlarni olib tashlang

"SQL" so'zidan keyin kiriting "ismlardan o'chirish a qaerda rowid> (b nomlaridan min (rowid) ni tanlang b bu erda b.name = a.name va b.age = a.age);" takroriy yozuvlarni olib tashlash uchun.

Oracle 13 -dagi takroriy yozuvlarni o'chirish
Oracle 13 -dagi takroriy yozuvlarni o'chirish

Qadam 3. dublikatlarini tekshiring

Yuqoridagi amallarni bajarganingizdan so'ng "nomlardan tanlash * ni kiriting;" keyin dublikatlar olib tashlanganmi yoki yo'qligini bilish uchun "majburiyat" oling.

SQL> nomlardan * ni tanlang; NOMI YOSHI ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 qatorlar tanlangan. SQL> nomlardan o'chirish a qaerda rowid> (b nomlaridan b (ism) ni tanlang. qator o'chirildi. SQL> nomlardan * ni tanlang; NOMI YOSHI ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 qator tanlangan. SQL> majburiyatlarni bajaradi; Majburiyat tugadi.

Ogohlantirish

  • Ma'lumotlar o'chirilmaganda (agar sizda biron bir savol bo'lsa) kontentga mos yozuvlar sifatida foydalanish uchun kirishda ikki nusxadagi jadval yarating.

    SQL> nomlardan * tanlash sifatida alan.names_backup jadvalini yaratish; Jadval yaratildi.

Tavsiya: