Как MySQL заявката обработва дублирани данни?Филтрирайте за премахване на дублиращи се данни

MySQLКак заявките обработват дублирани данни?Филтрирайте за премахване на дублиращи се данни

MySQL Обработка на дублирани данни

Възможно е да има дублиращи се записи в някои таблици с данни на MySQL. В някои случаи допускаме съществуването на дублиращи се данни, но понякога също трябва да изтрием тези дублирани данни.

В тази глава ще ви представим как да предотвратите дублиране на данни в таблицата с данни и как да изтриете дублиращите се данни в таблицата с данни.


Предотвратете дублиране на данни в таблици

Можете да зададете посоченото поле в таблицата с данни на MySQL като ПЪРВИЧЕН КЛЮЧ или УНИКАЛЕН (уникален) Индекс за гарантиране на уникалността на данните.

Нека опитаме пример: В таблицата по-долу няма индекси и първични ключове, така че таблицата позволява множество дублиращи се записи.

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)
);

Статистическите данни дублират

По-долу ще преброим броя на дублиращите се записи на first_name и last_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 в блога на Chen Weiliang, за да получите най-новите актуализации!

🔔 Бъдете първите, получили ценното „Ръководство за използване на инструмента за изкуствен интелект за маркетинг на съдържание ChatGPT“ в горната директория на канала! 🌟
📚 Това ръководство съдържа огромна стойност, 🌟Това е рядка възможност, не я пропускайте! ⏰⌛💨
Споделете и харесайте, ако ви харесва!
Вашите споделяния и харесвания са нашата постоянна мотивация!

 

发表 评论

Вашият имейл адрес няма да бъде публикуван. Използват се задължителните полета * Етикет

превъртете до върха