Ahoana no fomba itondran'ny query MySQL ny angona duplicate?Sivana hanesorana ny fanambarana angona dika mitovy

MySQLAhoana no fomba itondran'ny fanontaniana ny angona duplikat?Sivana hanesorana ny fanambarana angona dika mitovy

MySQL Fikarakarana angona duplikat

Mety misy firaketana dika mitovy amin'ny tabilao data MySQL sasany. Amin'ny toe-javatra sasany dia avelanay ny fisian'ny angon-drakitra dika mitovy, saingy indraindray mila mamafa ireo angona roa ireo ihany koa izahay.

Ato amin'ity toko ity dia hampahafantatra ny fomba hisorohana ny angon-drakitra dika mitovy amin'ny tabilao data sy ny fomba famafana ny angon-drakitra mitovy amin'ny tabilao data.


Sorohy ny angona dika mitovy amin'ny tabilao

Azonao atao ny mametraka ny saha voatondro ao amin'ny tabilao data MySQL ho KEY VOALOHANY na UNIQUE ( tokana ) Fanondroana mba hiantohana ny maha-tokana ny angona.

Andeha isika hanandrana ohatra: Tsy misy fanondroana sy fanalahidy fototra ao amin'ny tabilao etsy ambany, noho izany ny latabatra dia mamela rakitra dika mitovy.

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

Raha te-hametraka ny saha first_name sy last_name ao amin'ny latabatra ianao dia tsy azo averina ny data, azonao atao ny mametraka ny mode key primary double mba hametrahana ny maha-tokana ny data. tsy mety ho NULL, fa azo apetraka ho TSY NULL.Toy izao manaraka izao:

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

Raha mametraka fanondro tokana isika, dia rehefa mampiditra angon-drakitra dika mitovy, ny fanambarana SQL dia tsy hahomby amin'ny fanatanterahana ary hanipy fahadisoana.

Ny maha samy hafa ny INSERT IGNORE INTO sy ny INSERT INTO dia ny INSERT IGNORE dia tsy miraharaha ny angona efa misy ao amin'ny database, raha tsy misy data ao amin'ny database dia hampiditra data vaovao, ary raha misy data dia hitsipaka io data io.Amin'izany fomba izany, ny angon-drakitra efa misy ao amin'ny tahiry dia azo tazonina, ary azo tratrarina ny tanjon'ny fampidirana angona ao amin'ny banga.

Ity ohatra manaraka ity dia mampiasa INSERT IGNORE INTO, izay manatanteraka tsy misy hadisoana ary tsy mampiditra angon-drakitra dika mitovy amin'ny latabatra 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 Rehefa mampiditra angon-drakitra, aorian'ny fametrahana ny maha-tokana ny rakitra, raha ampidirina ny data duplicate dia tsy misy hadisoana haverina, fa fampitandremana ihany no haverina.Ary REPLACE INTO raha misy firaketana voalohany na tokana dia vonoy aloha.Asio firaketana vaovao.

Ny fomba iray hafa hametrahana ny maha-tokana ny angonao dia ny manampy index UNIQUE toy izao:

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

Data duplicate ny antontan'isa

Eto ambany isika dia manisa ny isan'ny firaketana dika mitovy amin'ny anarana_voalohany sy anarana_farany ao amin'ny latabatra:

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

Ny fanambarana fangatahana etsy ambony dia hamerina ny isan'ny rakitra dika mitovy amin'ny latabatra person_tbl.Amin'ny ankapobeny, mba hitadiavana soatoavina duplicate dia ataovy izao manaraka izao:

  • Farito hoe tsanganana inona no misy sanda mety ho duplicate.
  • Ampiasao ny COUNT(*) ao amin'ny lisitry ny safidin'ny tsanganana mba hitanisana ireo tsanganana ireo.
  • Tsanganana voatanisa ao amin'ny clause GROUP BY.
  • Ny clause HAVING dia mametraka ny isan'ny famerimberenana mihoatra ny 1.

sivana angon-drakitra dika mitovy

Raha mila mamaky angon-drakitra tsy manam-paharoa ianao dia azonao ampiasaina ny teny fanalahidy DISTINCT ao amin'ny fanambarana SELECT mba hanivana ny angona dika mitovy.

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

Azonao atao koa ny mampiasa GROUP BY mba hamakiana angona tokana avy amin'ny latabatra:

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

deduplicate data

Raha te hamafa angon-drakitra dika mitovy amin'ny tabilao data ianao dia azonao ampiasaina ity fanambarana SQL manaraka ity:

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;

Mazava ho azy fa azonao atao ihany koa ny manampy INDEX (index) sy PRIMAY KEY (fanalahidy voalohany) ao amin'ny tabilao data mba hamafa ireo rakitra dika mitovy amin'ny latabatra.Fomba toy ny eto ambany:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) nizara ny "Ahoana ny fomba fitadiavan'ny MySQL ny angona duplicate?Hanampy anao ny fanasivanana sy ny Deduplication.

Tongasoa eto mizara ny rohy amin'ity lahatsoratra ity:https://www.chenweiliang.com/cwl-499.html

Tongasoa eto amin'ny fantsona Telegram an'ny bilaogin'i Chen Weiliang hahazoana vaovao farany!

🔔 Aoka ho voalohany hahazo ny "ChatGPT Content Marketing AI Tool Usage Guide" sarobidy ao amin'ny lahatahiry ambony fantsona! 🌟
📚 Ity torolalana ity dia misy sanda lehibe, 🌟Ity dia fotoana tsy fahita firy, aza adino! ⏰⌛💨
Partageo ary j'aime raha tianao!
Ny fizaranao sy ny j'aime no antony manosika anay hatrany!

 

Comments

Ny adiresy mailakao dia tsy havoaka. Ampiasaina ny saha ilaina * Label

horonana mankany ambony