Как запрос 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 в, если есть основная или уникальная запись, сначала удалите ее.Вставьте новую запись.

Другой способ установить уникальность ваших данных — добавить индекс 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)
);

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

Ниже мы посчитаем количество повторяющихся записей 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);

Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ ) поделился "Как MySQL запрашивает и обрабатывает повторяющиеся данные?Операторы фильтрации и дедупликации».

Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-499.html

Добро пожаловать на Telegram-канал блога Chen Weiliang, чтобы быть в курсе последних обновлений!

🔔 Будьте первым, кто получит ценное «Руководство по использованию инструмента искусственного интеллекта для контент-маркетинга ChatGPT» в верхнем каталоге канала! 🌟
📚 Это руководство содержит огромную ценность. 🌟Это редкая возможность, не упустите ее! ⏰⌛💨
Делитесь и ставьте лайк, если хотите!
Ваш обмен и лайки - наша постоянная мотивация!

 

发表 评论

Ваш электронный адрес не будет опубликован. 必填 项 已 用 * 标注

滚动 到 顶部