Як запит 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 на, якщо є основний або унікальний запис, спочатку видаліть його.Вставте новий запис.

Ще один спосіб встановити унікальність ваших даних — додати УНІКАЛЬНИЙ індекс, подібний до цього:

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

Ласкаво просимо до каналу Telegram у блозі Чень Вейляна, щоб отримувати останні оновлення!

🔔 Станьте першим, хто отримає цінний «Посібник із використання інструменту штучного інтелекту маркетингу контенту ChatGPT» у верхньому каталозі каналу! 🌟
📚 Цей посібник має величезну цінність. 🌟Це рідкісна можливість, не пропустіть її! ⏰⌛💨
Поділіться та вподобайте, якщо вам подобається!
Ваші публікації та лайки є нашою постійною мотивацією!

 

发表 评论

Ваша електронна адреса не буде опублікована. 必填 项 已 用 * Етикетка

прокрутіть наверх