Kepiye pitakon MySQL nangani data duplikat?Filter kanggo mbusak statement data duplikat

MySQLKepiye carane pitakon nangani data duplikat?Filter kanggo mbusak statement data duplikat

MySQL Nangani data duplikat

Bisa uga ana cathetan duplikat ing sawetara tabel data MySQL. Ing sawetara kasus, kita ngidini anané data duplikat, nanging kadhangkala uga kudu mbusak data duplikat kasebut.

Ing bab iki, kita bakal ngenalake carane nyegah data duplikat ing tabel data lan carane mbusak data duplikat ing tabel data.


Nyegah data duplikat ing tabel

Sampeyan bisa nyetel kolom kasebut ing tabel data MySQL minangka KUNCI UTAMA utawa UNIK (unik) Indeks kanggo njamin keunikan data.

Coba conto: Ora ana indeks lan kunci utama ing tabel ing ngisor iki, mula tabel kasebut ngidini sawetara rekaman duplikat.

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

Yen sampeyan pengin nyetel kolom first_name lan last_name ing tabel, data ora bisa diulang, sampeyan bisa nyetel mode tombol primer dobel kanggo nyetel keunikan data. ora bisa NULL, nanging bisa disetel kanggo NOT NULL.Kaya ing ngisor iki:

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

Yen kita nyetel indeks unik, banjur nalika nglebokake data duplikat, statement SQL bakal gagal kanggo kasil nglakokaké lan uncalan kesalahan.

Bedane INSERT IGNORE INTO lan INSERT INTO yaiku INSERT IGNORE nglirwakake data sing wis ana ing basis data, yen ora ana data ing basis data, bakal nglebokake data anyar, lan yen ana data, data kasebut bakal skip.Kanthi cara iki, data sing ana ing basis data bisa dilestarekake, lan tujuan nglebokake data ing celah kasebut bisa digayuh.

Conto ing ngisor iki nggunakake INSERT IGNORE INTO, sing dieksekusi tanpa kesalahan lan ora nglebokake data duplikat menyang 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 nglebokake data, sawise keunikan rekaman disetel, yen data duplikat dilebokake, ora ana kesalahan sing bakal dibalekake, nanging mung peringatan sing bakal dibalekake.Lan GANTI menyang yen ana rekaman utami utawa unik, mbusak dhisik.Lebokake rekaman anyar.

Cara liya kanggo nyetel keunikan data sampeyan yaiku nambah indeks UNIK kaya iki:

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

Ing ngisor iki kita bakal ngetung jumlah duplikat cathetan first_name lan last_name ing tabel:

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

Pernyataan pitakon ing ndhuwur bakal ngasilake jumlah rekaman duplikat ing tabel person_tbl.Umumé, kanggo njaluk duplikat nilai, tindakake ing ngisor iki:

  • Nemtokake kolom sing bisa ngemot nilai duplikat.
  • Gunakake COUNT(*) ing dhaptar pilih kolom kanggo dhaptar kolom kasebut.
  • Kolom sing kadhaptar ing klausa GROUP BY.
  • Klausa HAVING nemtokake jumlah repetisi luwih saka 1.

nyaring data duplikat

Yen sampeyan kudu maca data unik, sampeyan bisa nggunakake tembung kunci DISTINCT ing statement PILIH kanggo nyaring data duplikat.

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

Sampeyan uga bisa nggunakake GROUP BY kanggo maca data unik saka tabel:

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

deduplikat data

Yen sampeyan pengin mbusak data duplikat ing tabel data, sampeyan bisa nggunakake statement SQL ing ngisor iki:

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;

Mesthi, sampeyan uga bisa nambah INDEX (indeks) lan PRIMAY KEY (primary key) ing tabel data kanggo mbusak duplikat cathetan ing meja.Cara kaya ing ngisor iki:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) bareng "Kepiye pitakon MySQL lan nangani data duplikat?Pernyataan Filtering lan Deduplikasi" bakal mbantu sampeyan.

Sugeng rawuh kanggo nuduhake link artikel iki:https://www.chenweiliang.com/cwl-499.html

Sugeng rawuh ing saluran Telegram blog Chen Weiliang kanggo entuk update paling anyar!

🔔 Dadi sing pertama entuk "Pandhuan Panggunaan Alat AI Pemasaran Konten ChatGPT" ing direktori ndhuwur saluran! 🌟
📚 Pandhuan iki ngemot nilai gedhe, 🌟Iki minangka kesempatan langka, aja kantun! ⏰⌛💨
Share lan seneng yen sampeyan seneng!
Nuduhake lan seneng sampeyan minangka motivasi terus-terusan!

 

komentar

Alamat email sampeyan ora bakal diterbitake. Bidhang sing dibutuhake digunakake * Panggilan

gulung menyang ndhuwur