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
Qadam 1. Dublikatlarni aniqlang
Bu misolda biz "Alan" dublikatini aniqlaymiz. Quyidagi SQL -ni kiritib, o'chiriladigan yozuvlar haqiqatan ham takrorlanganligiga ishonch hosil qiling.
Qadam 2. "Ism" sarlavhali ustundan aniqlang
Agar ustunda "Ism" sarlavhasi bo'lsa, "ustun_ nomi" ni Ism bilan almashtirish kerak.
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
Qadam 1. "Ismlardan ism" ni tanlang
"SQL" dan so'ng (standart so'rovlar tili qisqasi) "ismlardan nom tanlash" ni kiriting.
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
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.
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
Qadam 1. O'chirmoqchi bo'lgan RowID -ni tanlang
"SQL" dan keyin "rowid ni tanlang, ismlardan ism;." Kiriting.
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.
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
Qadam 1. qatorni tanlang
"SQL" dan keyin "nomlardan * ni tanlang;" chiziqni ko'ra olish.
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.
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.