כיצד למצוא ולמחוק כפילויות ב-SQL

כיצד למצוא ולמחוק כפילויות ב-SQL
קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

שיטות עבודה מומלצות לתכנון מסד נתונים ממליצות להשתמש באילוץ UNIQUE כדי למנוע כפילויות במסד נתונים. עם זאת, כאשר עובדים עם מסד נתונים מעוצב בצורה גרועה או נתונים לא נקיים, ייתכן שתצטרך למצוא כפילויות בעצמך ולמחוק אותם באופן ידני.





המשך לקרוא כדי ללמוד כיצד למצוא כפילויות במסד נתונים של SQL וכיצד למחוק אותם.





אפליקציית הודעות לא עובדת ב- mac

צור מסד נתונים לדוגמה

למטרות הדגמה, צור טבלה בשם Users עם עמודת שם וציון על ידי הפעלת שאילתת SQL זו.





 DROP TABLE IF EXISTS Users; 

CREATE TABLE Users (
    pk_id int PRIMARY KEY,
    name VARCHAR (16),
    score INT,
);

הוסף כמה ערכים לדוגמה על ידי הפעלת השאילתה הזו:

 INSERT INTO 
    Users(pk_id, name, score)
VALUES
    (1, 'Jane', 20),
    (2, 'John', 13),
    (3, 'Alex', 32),
    (4, 'John', 46),
    (5, 'Jane', 20),
    (6, 'Mary', 34),
    (7, 'Jane', 20),
    (8, 'John', 13)

שים לב שחלק מהשורות הללו מכילות ערכים כפולים עבור עמודת השם.



אתה מוזמן לבדוק את אלה פקודות ושאילתות SQL אם אתה צריך הסבר מעמיק יותר כיצד לתפעל מסדי נתונים באמצעות SQL.

שימוש ב-GROUP BY כדי למצוא ערכים כפולים

אתה יכול השתמש במשפט GROUP BY כדי לסדר ערכים העומדים בתנאים מסוימים באותה קבוצה.





אתה יכול לשחק משחקי ps2 במחשב

נניח שהשמות בטבלה לדוגמה חייבים להיות ייחודיים. אתה יכול להשתמש ב-GROUP BY כדי לקבץ את השורות שחולקות את אותו השם.

 SELECT name, COUNT(name) 
FROM Users
GROUP BY name
HAVING COUNT(name) > 1

COUNT מאפשר לך לבחור את השורות שיש בהן יותר ממשתמש אחד באותו שם.





כאשר אתה מפעיל שאילתה זו, מסד הנתונים יחזיר שורות המכילות את ג'ון וג'יין ככפולים.

מחיקת כפילויות ממסד נתונים

לאחר מציאת הכפילויות, ייתכן שתרצה למחוק אותם באמצעות הצהרת DELETE.

עבור דוגמה זו, הפעל את השאילתה הבאה:

למה הווידאו המיידי של אמזון הפריים שלי לא עובד
 WITH cte AS ( 
    SELECT *
        ROW_NUMBER() OVER (
            PARTITION BY
                name, score
            ORDER BY
                name, score
        ) R
     FROM
        Users
)

DELETE FROM cte
WHERE R > 1;

שאילתה זו משתמשת בביטוי CTE כדי למצוא את הכפילויות ולאחר מכן מוחקת את כולם מלבד אחד.

מדוע כדאי למחוק נתונים כפולים

מחיקת נתונים כפולים אינה חובה. עם זאת, זה מאפשר לך לפנות את השטח שבו משתמשים בשורות כפולות.

פחות שורות גם אומר ששאילתות יכולות להופיע הרבה יותר מהר, מה שמוביל לביצועים גבוהים יותר. השתמש בשאילתות במדריך זה כדי לעזור לך למצוא ולהסיר כפילויות ממסד נתונים של SQL.