Kumaha query MySQL nanganan duplikat data?Filter pikeun mupus pernyataan data duplikat

MySQLKumaha queries nanganan duplikat data?Filter pikeun mupus pernyataan data duplikat

MySQL Nanganan data duplikat

Meureun aya duplikat rékaman dina sababaraha tabel data MySQL. Dina sababaraha kasus, urang ngidinan ayana duplikat data, tapi kadang urang ogé kudu ngahapus duplikat data ieu.

Dina bab ieu, urang bakal ngawanohkeun kumaha carana nyegah duplikat data dina tabel data jeung kumaha mupus duplikat data dina tabel data.


Nyegah duplikat data dina tabel

Anjeun tiasa nyetel widang nu tangtu dina tabel data MySQL salaku konci primér atawa UNIK (unik) Indéks pikeun mastikeun keunikan data.

Cobian conto: Henteu aya indéks sareng konci primér dina tabel di handap ieu, ku kituna tabél ngamungkinkeun sababaraha rékaman duplikat.

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

Upami anjeun hoyong nyetél widang first_name sareng last_name dina tabél, data henteu tiasa diulang deui, anjeun tiasa nyetél modeu konci primér ganda pikeun nyetél keunikan data. Upami anjeun nyetél konci primér ganda, nilai standar konci éta. teu bisa NULL, tapi bisa disetel ka NOT NULL.Sukamaha kieu:

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

Upami urang nyetél indéks unik, teras nalika nyelapkeun data duplikat, pernyataan SQL bakal gagal ngalaksanakeun suksés sareng ngalungkeun kasalahan.

Beda antara INSERT IGNORE INTO sareng INSERT INTO nyaeta INSERT IGNORE ngalalaworakeun data anu tos aya dina database, upami teu aya data dina database, bakal nyelapkeun data anyar, sareng upami aya data bakal nga- skip data ieu.Ku cara kieu, data nu aya dina database bisa dilestarikan, sarta tujuan inserting data dina gap bisa kahontal.

Conto di handap ieu nganggo INSERT IGNORE INTO, anu ngajalankeun tanpa kasalahan sareng henteu ngalebetkeun duplikat data kana tabel 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 Nalika nyelapkeun data, saatos keunikan catetan diatur, upami data duplikat diselapkeun, teu aya kasalahan anu bakal dipulangkeun, tapi ngan ukur peringatan anu bakal dipulangkeun.Sareng GANTIKAN kana upami aya catetan primér atanapi unik, hapus heula.Selapkeun rékaman anyar.

Cara séjén pikeun nyetél keunikan data anjeun nyaéta nambihan indéks UNIK sapertos kieu:

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

Statistik duplikat data

Di handap ieu urang bakal ngitung jumlah duplikat rékaman first_name sareng last_name dina tabél:

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

Pernyataan query di luhur bakal mulangkeun jumlah duplikat rékaman dina tabel person_tbl.Sacara umum, pikeun naroskeun nilai duplikat, lakukeun ieu:

  • Nangtukeun kolom mana anu ngandung kamungkinan duplikat nilai.
  • Anggo COUNT(*) dina daptar pilih kolom pikeun daptar kolom éta.
  • Kolom didaptarkeun dina klausa GROUP BY.
  • Klausa HAVING nangtukeun jumlah pangulangan leuwih ti 1.

nyaring data duplikat

Upami anjeun kedah maca data unik, anjeun tiasa nganggo kecap konci DISTINCT dina pernyataan PILIH pikeun nyaring data duplikat.

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

Anjeun ogé tiasa nganggo GROUP BY pikeun maca data unik tina méja:

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

deduplikat data

Upami anjeun hoyong mupus data duplikat dina tabel data, anjeun tiasa nganggo pernyataan SQL ieu:

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;

Tangtosna, anjeun ogé tiasa nambihan INDEX (indéks) sareng PRIMAY KEY (primary key) dina tabel data pikeun ngahapus duplikat rékaman dina tabél.Métode sapertos di handap ieu:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) dibagikeun "Kumaha MySQL query jeung nanganan duplikat data?Nyaring sareng Pernyataan Deduplikasi" bakal ngabantosan anjeun.

Wilujeng ngabagikeun tautan artikel ieu:https://www.chenweiliang.com/cwl-499.html

Wilujeng sumping di saluran Telegram blog Chen Weiliang pikeun kéngingkeun apdet panganyarna!

🔔 Janten anu pangheulana kéngingkeun "Panduan Penggunaan Alat AI Pemasaran Konten ChatGPT" dina diréktori luhur saluran! 🌟
📚 Pituduh ieu ngandung nilai anu ageung, 🌟Ieu mangrupikeun kasempetan anu jarang, tong kantun! ⏰⌛💨
Bagikeun sareng suka upami anjeun resep!
Bagikeun sareng resep anjeun mangrupikeun motivasi kontinyu kami!

 

koméntar

Alamat email anjeun moal diterbitkeun. Widang anu diperyogikeun dianggo * Labél

gulung ka luhur