כאשר אתה עובד באורקל, אתה עשוי לגלות שלחלק מהרשומות שלך יש כפילויות. אתה יכול למחוק שורות כפולות אלה על ידי זיהוי שלהן באמצעות RowID או כתובת השורה שלה. לפני שתתחיל, עליך ליצור טבלת גיבוי למקרה שתצטרך להפנות אליהם לאחר מחיקת רשומות.
צעדים
שיטה 1 מתוך 4: זיהוי הכפיל שלך
שלב 1. זהה את הכפיל
במקרה זה, זהה את הדוגמה הכפולה, "אלן". ודא שהרשומות שאתה מנסה למחוק הן למעשה כפילויות על ידי הזנת ה- SQL למטה.
שלב 2. זיהוי מתוך עמודה בשם "שמות
"במקרה של עמודה בשם" שמות ", היית מחליף" שם_עמודה "בשמות.
שלב 3. זיהוי מעמודות אחרות
אם ניסית לזהות את הכפיל לפי עמודה אחרת, למשל גיל אלן ולא שמו, היית מזין "גילאים" במקום "שם_טור" וכן הלאה.
בחר שם טור, ספירה (שם טור) מקבוצת הטבלה לפי שם טור עם ספירה (שם טור)> 1;
שיטה 2 מתוך 4: מחיקת כפילות אחת
שלב 1. בחר "שם מהשמות
"אחרי" SQL ", המייצג שפת שאילתות רגילה, הזן" בחר שם מהשמות ".
שלב 2. מחק את כל השורות עם השם המשוכפל
לאחר "SQL", הזן "מחק משמות שבהם name = 'Alan';." שים לב שאותן רישיות חשובות כאן, כך שזה ימחק את כל השורות בשם "אלן". לאחר "SQL", הזן "התחייב".
שלב 3. שכר את השורה ללא כפילות
כעת, לאחר שמחקת את כל השורות עם השם לדוגמה "אלן", תוכל להכניס אחת לאחור על ידי הזנת "הכנס לערכי שם ('אלן');." לאחר "SQL", הזן "התחייב" ליצירת השורה החדשה שלך.
שלב 4. עיין ברשימה החדשה שלך
לאחר השלמת השלבים לעיל, תוכל לבדוק אם אין לך עוד רשומות כפולות על ידי הזנת "בחר * מהשמות".
SQL> בחר שם משמות; NAME ------------------------------ אלן קארי טום אלן נבחר שורות. SQL> מחק משמות שבהם name = 'Alan'; שורות נמחקו. SQL> להתחייב; התחייבות מלאה. SQL> הכנס לשמות ערכים ('אלן'); נוצרה השורה. SQL> להתחייב; התחייבות מלאה. SQL> בחר * מתוך שמות; NAME ------------------------------ נבחרו שורות אלן קארי טום.
שיטה 3 מתוך 4: מחיקת כפילויות מרובות
שלב 1. בחר את ה- RowID שברצונך למחוק
לאחר "SQL", הזן "בחר rowid, שם מהשמות;."
שלב 2. מחק את הכפיל
לאחר "SQL", הזן "מחק מהשמות a שבו rowid> (בחר min (rowid) מהשמות b שבו b.name = a.name);" למחוק רשומות כפולות.
שלב 3. בדוק אם יש כפילויות
לאחר השלמת האמור לעיל, הפקודות בודקות אם עדיין יש לך רשומות כפולות על ידי הזנת "בחר rowid, שם מהשמות;" ואז "להתחייב".
SQL> בחר rowid, שם משמות; שם ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC קארי AABJnsAAGAAAdfOAAD טום AABJnsAAGAAAdfOAAF שורות אלן נבחרו. SQL> מחק מהשמות a שבו rowid> (בחר min (rowid) מהשמות b שבו b.name = a.name); שורות נמחקו. SQL> בחר rowid, שם משמות; שם ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC קארי AABJnsAAGAAAdfOAAD שורות טום נבחרו. SQL> להתחייב; התחייבות מלאה.
שיטה 4 מתוך 4: מחיקת שורות עם עמודות
שלב 1. בחר את השורות שלך
לאחר "SQL", הזן "בחר * מתוך שמות;" כדי לראות את השורות שלך.
שלב 2. מחק שורות כפולות על ידי זיהוי העמודה שלהן
לאחר "SQL" הזן "מחק מהשמות a שבו rowid> (בחר min (rowid) מהשמות b שבו 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> צור טבלה alan.names_backup כבחירה * מתוך שמות; טבלה נוצרה.