Paano pinangangasiwaan ng query ng MySQL ang duplicate na data?I-filter para alisin ang duplicate na data statement

MySQLPaano pinangangasiwaan ng mga query ang duplicate na data?I-filter para alisin ang duplicate na data statement

MySQL Pangangasiwa ng duplicate na data

Maaaring may mga duplicate na tala sa ilang mga talahanayan ng data ng MySQL. Sa ilang mga kaso, pinapayagan namin ang pagkakaroon ng duplicate na data, ngunit minsan kailangan din naming tanggalin ang mga duplicate na data na ito.

Sa kabanatang ito, ipakikilala namin kung paano maiwasan ang duplicate na data sa data table at kung paano tanggalin ang duplicate na data sa data table.


Pigilan ang duplicate na data sa mga talahanayan

Maaari mong itakda ang tinukoy na patlang sa talahanayan ng data ng MySQL bilang PANGUNAHING SUSI o NATATANGI (natatangi) Index upang matiyak ang pagiging natatangi ng data.

Subukan natin ang isang halimbawa: Walang mga index at pangunahing key sa talahanayan sa ibaba, kaya pinapayagan ng talahanayan ang maramihang mga duplicate na tala.

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

Kung gusto mong itakda ang mga field na first_name at last_name sa talahanayan, hindi na mauulit ang data, maaari mong itakda ang double primary key mode para itakda ang uniqueness ng data. Kung itatakda mo ang double primary key, ang default na value ng key na iyon hindi maaaring NULL, ngunit maaaring itakda sa NOT NULL.Tulad ng sumusunod:

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

Kung magtatakda kami ng isang natatanging index, pagkatapos ay kapag nagpasok ng duplicate na data, ang SQL statement ay mabibigo na matagumpay na maipatupad at magtapon ng isang error.

Ang pagkakaiba sa pagitan ng INSERT IGNORE INTO at INSERT INTO ay ang INSERT IGNORE ay hindi pinapansin ang data na umiiral na sa database. Kung walang data sa database, ito ay maglalagay ng bagong data, at kung mayroong data, ito ay laktawan ang data na ito.Sa ganitong paraan, ang umiiral na data sa database ay maaaring mapangalagaan, at ang layunin ng pagpasok ng data sa puwang ay maaaring makamit.

Ang sumusunod na halimbawa ay gumagamit ng INSERT IGNORE INTO, na nagpapatupad ng walang error at hindi naglalagay ng duplicate na data sa talahanayan ng data:

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 Kapag nagpasok ng data, pagkatapos maitakda ang uniqueness ng record, kung duplicate na data ang ipinasok, walang error na ibabalik, ngunit babala lamang ang ibabalik.At PALITAN SA kung mayroong pangunahin o kakaibang tala, tanggalin muna ito.Magpasok ng bagong record.

Ang isa pang paraan upang itakda ang pagiging natatangi ng iyong data ay ang magdagdag ng NATATANGING index na tulad nito:

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

Duplicate na data ang mga istatistika

Sa ibaba ay bibilangin namin ang bilang ng mga duplicate na tala ng first_name at last_name sa talahanayan:

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

Ibabalik ng statement ng query sa itaas ang bilang ng mga duplicate na tala sa talahanayan ng person_tbl.Sa pangkalahatan, upang mag-query para sa mga duplicate na halaga, gawin ang sumusunod:

  • Tukuyin kung aling column ang naglalaman ng posibleng mga duplicate na value.
  • Gamitin ang COUNT(*) sa listahan ng piling hanay upang ilista ang mga column na iyon.
  • Mga column na nakalista sa GROUP BY clause.
  • Itinatakda ng HAVING clause ang bilang ng mga pag-uulit na higit sa 1.

i-filter ang duplicate na data

Kung kailangan mong basahin ang natatanging data, maaari mong gamitin ang DISTINCT na keyword sa SELECT statement upang i-filter ang duplicate na data.

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

Maaari mo ring gamitin ang GROUP BY upang basahin ang natatanging data mula sa isang talahanayan:

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

i-deduplicate ang data

Kung gusto mong tanggalin ang duplicate na data sa talahanayan ng data, maaari mong gamitin ang sumusunod na SQL statement:

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;

Siyempre, maaari ka ring magdagdag ng INDEX (index) at PRIMAY KEY (primary key) sa talahanayan ng data upang tanggalin ang mga duplicate na tala sa talahanayan.Mga pamamaraan tulad ng nasa ibaba:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ibinahagi "Paano ang MySQL query at pinangangasiwaan ang duplicate na data?Ang Filtering at Deduplication Statements" ay makakatulong sa iyo.

Maligayang pagdating upang ibahagi ang link ng artikulong ito:https://www.chenweiliang.com/cwl-499.html

Maligayang pagdating sa Telegram channel ng blog ni Chen Weiliang para makuha ang pinakabagong mga update!

🔔 Maging una upang makuha ang mahalagang "ChatGPT Content Marketing AI Tool Usage Guide" sa direktoryo ng nangungunang channel! 🌟
📚 Ang gabay na ito ay naglalaman ng malaking halaga, 🌟Ito ay isang bihirang pagkakataon, huwag palampasin ito! ⏰⌛💨
Share and like kung gusto mo!
Ang iyong pagbabahagi at pag-like ay ang aming patuloy na pagganyak!

 

发表 评论

Ang iyong email address ay hindi mai-publish. 必填 项 已 用 * Tatak

mag-scroll sa itaas