שיטות עבודה מומלצות לתכנון מסד נתונים ממליצות להשתמש באילוץ UNIQUE כדי למנוע כפילויות במסד נתונים. עם זאת, כאשר עובדים עם מסד נתונים מעוצב בצורה גרועה או נתונים לא נקיים, ייתכן שתצטרך למצוא כפילויות בעצמך ולמחוק אותם באופן ידני.
המשך לקרוא כדי ללמוד כיצד למצוא כפילויות במסד נתונים של SQL וכיצד למחוק אותם.
צור מסד נתונים לדוגמה
למטרות הדגמה, צור טבלה בשם Users עם עמודת שם וציון על ידי הפעלת שאילתת SQL זו.
יְרִידָהשולחןאםקייםמשתמשים;
לִיצוֹרשולחןמשתמשים (
pk_id int מפתח ראשי,
שם VARCHAR (16),
ציון INT,
);
הוסף כמה ערכים לדוגמה על ידי הפעלת השאילתה הזו:
לְהַכנִיסלְתוֹך
משתמשים (pk_id, שם, ניקוד)
ערכים
(1, 'ג'יין', 20),
(2, 'ג'ון', 13),
(3, 'אלכס', 32),
(4, 'ג'ון', 46),
(5, 'ג'יין', 20),
(6, 'מרי', 34),
(7, 'ג'יין', 20),
(8, 'ג'ון', 13)
שים לב שחלק מהשורות הללו מכילות ערכים כפולים עבור עמודת השם.
אתה מוזמן לבדוק את אלה פקודות ושאילתות SQL אם אתה צריך הסבר מעמיק יותר כיצד לתפעל מסדי נתונים באמצעות SQL.
שימוש ב-GROUP BY כדי למצוא ערכים כפולים
אתה יכול השתמש במשפט GROUP BY כדי לסדר ערכים העומדים בתנאים מסוימים באותה קבוצה.
נניח שהשמות בטבלה לדוגמה חייבים להיות ייחודיים. אתה יכול להשתמש ב-GROUP BY כדי לקבץ את השורות שחולקות את אותו השם.
בחרשֵׁם, לספור(שֵׁם)
ממשתמשים
GROUP לפי שם
HAVING COUNT(שם) > 1
COUNT מאפשר לך לבחור את השורות שיש בהן יותר ממשתמש אחד באותו שם.
כאשר אתה מפעיל שאילתה זו, מסד הנתונים יחזיר שורות המכילות את ג'ון וג'יין ככפולים.
מחיקת כפילויות ממסד נתונים
לאחר מציאת הכפילויות, ייתכן שתרצה למחוק אותם באמצעות הצהרת DELETE.
עבור דוגמה זו, הפעל את השאילתה הבאה:
עם cte כפי ש (
בחר *
ROW_NUMBER() מעל (
חלוקה לפי
שם, ציון
מיין לפי
שם, ציון
) ר
מ
משתמשים
)
לִמְחוֹקמ cte
WHERE R > 1;
שאילתה זו משתמשת בביטוי CTE כדי למצוא את הכפילויות ולאחר מכן מוחקת את כולם מלבד אחד.
מדוע כדאי למחוק נתונים כפולים
מחיקת נתונים כפולים אינה חובה. עם זאת, זה מאפשר לך לפנות את השטח שבו משתמשים בשורות כפולות.
פחות שורות גם אומר ששאילתות יכולות להופיע הרבה יותר מהר, מה שמוביל לביצועים גבוהים יותר. השתמש בשאילתות במדריך זה כדי לעזור לך למצוא ולהסיר כפילויות ממסד נתונים של SQL.