Jak dotaz MySQL zpracovává duplicitní data?Filtr pro odstranění duplicitních datových výpisů

MySQLJak dotazy zpracovávají duplicitní data?Filtr pro odstranění duplicitních datových výpisů

MySQL Zpracování duplicitních dat

V některých datových tabulkách MySQL mohou být duplicitní záznamy. V některých případech povolujeme existenci duplicitních dat, ale někdy musíme tato duplicitní data také smazat.

V této kapitole si představíme, jak zabránit duplicitním datům v datové tabulce a jak duplicitní data v datové tabulce smazat.


Zabránit duplicitním datům v tabulkách

Zadané pole v datové tabulce MySQL můžete nastavit jako PRIMÁRNÍ KLÍČ nebo UNIKÁTNÍ (unikátní) Index pro zajištění jedinečnosti dat.

Zkusme příklad: V níže uvedené tabulce nejsou žádné indexy a primární klíče, takže tabulka umožňuje více duplicitních záznamů.

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

Pokud chcete v tabulce nastavit pole jméno a příjmení, data se nemohou opakovat, můžete nastavit režim dvojitého primárního klíče pro nastavení jedinečnosti dat. Pokud nastavíte dvojitý primární klíč, výchozí hodnota tohoto klíče nemůže být NULL, ale může být nastaveno na NOT NULL.Jak následuje:

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

Pokud nastavíme jedinečný index, pak se při vkládání duplicitních dat SQL příkaz nepodaří úspěšně provést a vyvolá chybu.

Rozdíl mezi INSERT IGNORE INTO a INSERT INTO je v tom, že INSERT IGNORE ignoruje data, která již v databázi existují. Pokud v databázi žádná data nejsou, vloží nová data, a pokud tam jsou, tato data přeskočí.Tímto způsobem lze zachovat stávající data v databázi a dosáhnout účelu vložení dat do mezery.

Následující příklad používá INSERT IGNORE INTO, který se provede bez chyby a bez vložení duplicitních dat do datové tabulky:

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 Při vkládání dat se po nastavení jedinečnosti záznamu v případě vložení duplicitních dat nevrátí žádná chyba, ale pouze varování.A REPLACE INTO do, pokud existuje primární nebo jedinečný záznam, nejprve jej smažte.Vložte nový záznam.

Dalším způsobem, jak nastavit jedinečnost vašich dat, je přidat UNIQUE index, jako je tento:

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

Statistiky duplicitní data

Níže spočítáme počet duplicitních záznamů first_name a last_name v tabulce:

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

Výše uvedený dotaz vrátí počet duplicitních záznamů v tabulce person_tbl.Obecně platí, že chcete-li se dotazovat na duplicitní hodnoty, postupujte takto:

  • Určete, který sloupec obsahuje možné duplicitní hodnoty.
  • Pomocí COUNT(*) v seznamu pro výběr sloupců zobrazíte tyto sloupce.
  • Sloupce uvedené v klauzuli GROUP BY.
  • Klauzule HAVING nastavuje počet opakování větší než 1.

filtrovat duplicitní data

Pokud potřebujete číst jedinečná data, můžete použít klíčové slovo DISTINCT v příkazu SELECT k filtrování duplicitních dat.

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

Můžete také použít GROUP BY ke čtení jedinečných dat z tabulky:

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

deduplikovat data

Pokud chcete odstranit duplicitní data v datové tabulce, můžete použít následující příkaz 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;

Samozřejmě můžete také přidat INDEX (index) a PRIMAY KEY (primární klíč) do datové tabulky a odstranit duplicitní záznamy v tabulce.Metody uvedené níže:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "Jak MySQL dotazuje a zpracovává duplicitní data?Filtrování a prohlášení o deduplikaci“ vám pomůže.

Vítejte u sdílení odkazu na tento článek:https://www.chenweiliang.com/cwl-499.html

Vítejte na telegramovém kanálu blogu Chen Weiliang, kde získáte nejnovější aktualizace!

🔔 Buďte první, kdo získá cenný „Průvodce používáním nástroje AI pro obsahový marketing ChatGPT“ v hlavním adresáři kanálu! 🌟
📚 Tento průvodce má obrovskou hodnotu, 🌟Toto je vzácná příležitost, nenechte si ji ujít! ⏰⌛💨
Sdílejte a lajkujte, pokud se vám líbí!
Vaše sdílení a lajky jsou naší neustálou motivací!

 

发表 评论

Vaše e-mailová adresa nebude zveřejněna. 必填 项 已 用 * 标注

滚动 到 顶部