כיצד שאילתת MySQL מטפלת בנתונים כפולים?מסנן כדי להסיר משפט נתונים כפול

MySQLכיצד שאילתות מטפלות בנתונים כפולים?מסנן כדי להסיר משפט נתונים כפול

MySQL טיפול בנתונים כפולים

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

בפרק זה נציג כיצד למנוע נתונים כפולים בטבלת הנתונים וכיצד למחוק את הנתונים הכפולים בטבלת הנתונים.


מנע נתונים כפולים בטבלאות

אתה יכול להגדיר את השדה שצוין בטבלת הנתונים של MySQL בתור מפתח ראשי אוֹ UNIQUE (ייחודי) אינדקס להבטחת ייחודיות הנתונים.

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

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

אם אתה רוצה להגדיר את השדות first_name ו-last_name בטבלה, לא ניתן לחזור על הנתונים, אתה יכול להגדיר את מצב המפתח הראשי הכפול כדי להגדיר את הייחודיות של הנתונים. אם תגדיר את המפתח הראשי הכפול, ערך ברירת המחדל של אותו מפתח לא יכול להיות NULL, אך ניתן להגדיר אותו ל- NOT NULL.כדלהלן:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

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

ההבדל בין INSERT IGNORE INTO ל-INSERT INTO הוא ש-INSERT IGNORE מתעלם מהנתונים שכבר קיימים במסד הנתונים, אם אין נתונים במסד הנתונים, הוא יכניס נתונים חדשים, ואם יש נתונים, הוא ידלג על הנתונים הללו.כך ניתן לשמר את הנתונים הקיימים בבסיס הנתונים ולהשיג את מטרת הכנסת הנתונים לפער.

הדוגמה הבאה משתמשת ב-INSERT IGNORE INTO, המופעל ללא שגיאה ואינו מוסיף נתונים כפולים לטבלת הנתונים:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO בעת הכנסת נתונים, לאחר קביעת הייחודיות של הרשומה, אם יוכנסו נתונים כפולים, לא תוחזר שגיאה, אלא תוחזר רק אזהרה.ו- REPLACE INTO לתוך אם יש רשומה ראשית או ייחודית, מחק אותה תחילה.הוסף רשומה חדשה.

דרך נוספת להגדיר את הייחודיות של הנתונים שלך היא להוסיף אינדקס UNIQUE בצורה הבאה:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

סטטיסטיקה משכפלת נתונים

להלן נספור את מספר הרשומות הכפולות של שם_שם ושם_משפחה בטבלה:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

הצהרת השאילתה לעיל תחזיר את מספר הרשומות הכפולות בטבלת person_tbl.באופן כללי, כדי לחפש ערכים כפולים, בצע את הפעולות הבאות:

  • קבע איזו עמודה מכילה ערכים כפולים אפשריים.
  • השתמש ב-COUNT(*) ברשימת הבחירה בעמודות כדי לרשום את העמודות הללו.
  • עמודות המפורטות בסעיף GROUP BY.
  • סעיף HAVING קובע את מספר החזרות גדול מ-1.

לסנן נתונים כפולים

אם אתה צריך לקרוא נתונים ייחודיים, אתה יכול להשתמש במילת המפתח DISTINCT במשפט SELECT כדי לסנן נתונים כפולים.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

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

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

ביטול כפילויות של נתונים

אם ברצונך למחוק נתונים כפולים בטבלת הנתונים, תוכל להשתמש במשפט SQL הבא:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

כמובן, ניתן גם להוסיף INDEX (אינדקס) ו-PRIMAY KEY (מפתח ראשי) בטבלת הנתונים כדי למחוק רשומות כפולות בטבלה.שיטות כמו להלן:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) משותף "כיצד MySQL מבצע שאילתות ומטפל בנתונים כפולים?הצהרות סינון ומניעת כפילות" יעזרו לך.

מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-499.html

ברוכים הבאים לערוץ הטלגרם של הבלוג של Chen Weiliang כדי לקבל את העדכונים האחרונים!

🔔 היה הראשון לקבל את "מדריך השימוש בכלי AI של ChatGPT Content Marketing" בספרייה העליונה של הערוץ! 🌟
📚 המדריך הזה מכיל ערך עצום, 🌟זו הזדמנות נדירה, אל תפספסו אותה! ⏰⌛💨
שתפו ותעשו לייק אם בא לכם!
השיתוף והלייקים שלך הם המוטיבציה המתמשכת שלנו!

 

发表 评论

כתובת האימייל שלך לא תפורסם. 必填 项 已 用 * תווית

גלול למעלה