Giunsa pagdumala sa pangutana sa MySQL ang doble nga datos?Pagsala aron matangtang ang duplicate nga pahayag sa datos

MySQLGiunsa pagdumala sa mga pangutana ang doble nga datos?Pagsala aron matangtang ang duplicate nga pahayag sa datos

MySQL Pagdumala sa duplicate nga datos

Mahimong adunay mga doble nga mga rekord sa pipila nga mga lamesa sa datos sa MySQL. Sa pipila ka mga kaso, gitugotan namon ang paglungtad sa mga doble nga datos, apan usahay kinahanglan usab namon nga papason kini nga mga doble nga datos.

Niini nga kapitulo, atong ipaila kon unsaon pagpugong sa duplicate data sa data table ug unsaon pagtangtang sa duplicate data sa data table.


Paglikay sa doble nga datos sa mga lamesa

Mahimo nimong itakda ang espesipikong field sa MySQL data table ingon PANGUNAHING YAWI o UNIQUE (talagsaon) Index aron masiguro ang pagkatalagsaon sa datos.

Atong sulayan ang usa ka pananglitan: Walay mga indeks ug panguna nga mga yawe sa lamesa sa ubos, mao nga ang lamesa nagtugot sa daghang mga duplicate nga mga rekord.

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

Kung gusto nimo ibutang ang mga field nga first_name ug last_name sa lamesa, ang data dili na masubli, mahimo nimong itakda ang double primary key mode aron itakda ang uniqueness sa data. dili mahimong NULL, apan mahimong ibutang sa NOT NULL.Ingon sa mosunod:

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 magbutang kami usa ka talagsaon nga indeks, unya kung magsulud sa doble nga datos, ang pahayag sa SQL mapakyas nga malampuson nga ipatuman ug ihulog ang usa ka sayup.

Ang kalainan tali sa INSERT IGNORE INTO ug INSERT INTO mao nga ang INSERT IGNORE wala magtagad sa mga datos nga anaa na sa database. Kung walay data sa database, kini mag-insert ug bag-ong data, ug kung adunay data, kini molaktaw niini nga data.Niining paagiha, ang kasamtangan nga datos sa database mahimong mapreserbar, ug ang katuyoan sa pagsal-ot sa datos sa gintang mahimong makab-ot.

Ang mosunud nga pananglitan naggamit sa INSERT IGNORE INTO, nga nagpatuman nga wala’y sayup ug wala magsulud sa doble nga datos sa lamesa sa datos:

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 Sa diha nga nagsal-ot sa datos, human mabutang ang pagkatalagsaon sa rekord, kung ang duplicate nga datos gisal-ot, walay sayop nga ibalik, apan usa lamang ka pasidaan ang ibalik.Ug ISLI SA kung adunay panguna o talagsaon nga rekord, tangtangon una.Pagsulod ug bag-ong rekord.

Ang laing paagi sa pagtakda sa pagkatalagsaon sa imong data mao ang pagdugang ug UNIQUE index sama niini:

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 nga datos sa estadistika

Sa ubos atong ihap ang gidaghanon sa mga duplicate nga rekord sa first_name ug last_name sa lamesa:

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

Ang pahayag sa pangutana sa ibabaw ibalik ang gidaghanon sa mga doble nga mga rekord sa lamesa sa person_tbl.Sa kinatibuk-an, aron mangutana alang sa mga doble nga kantidad, buhata ang mosunod:

  • Tinoa kung unsang kolum ang adunay posible nga doble nga mga kantidad.
  • Gamita ang COUNT(*) sa column select list aron ilista kadtong mga column.
  • Mga kolum nga gilista sa GROUP BY clause.
  • Ang HAVING clause nagtakda sa gidaghanon sa mga pagsubli nga labaw sa 1.

filter duplicate nga datos

Kung kinahanglan nimo nga basahon ang talagsaon nga datos, mahimo nimong gamiton ang DISTINCT nga keyword sa PILI nga pahayag aron masala ang doble nga datos.

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

Mahimo usab nimo gamiton ang GROUP BY sa pagbasa sa talagsaon nga datos gikan sa usa ka lamesa:

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

deduplicate nga datos

Kung gusto nimong papason ang mga duplicate nga datos sa lamesa sa datos, mahimo nimong gamiton ang mosunod nga pahayag sa 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;

Siyempre, mahimo usab nimong idugang ang INDEX (index) ug PRIMAY KEY (primary key) sa talaan sa datos aron matangtang ang mga duplicate nga rekord sa lamesa.Mga pamaagi sama sa ubos:

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

Paglaum Chen Weiliang Blog ( https://www.chenweiliang.com/ ) mipakigbahin "Giunsa ang MySQL pangutana ug pagdumala sa duplicate data?Pagsala ug Deduplikasyon nga mga Pahayag" makatabang kanimo.

Welcome sa pagpaambit sa link niini nga artikulo:https://www.chenweiliang.com/cwl-499.html

Malipayon nga pag-abut sa channel sa Telegram sa blog ni Chen Weiliang aron makuha ang labing bag-ong mga update!

🔔 Mahimong una nga makakuha sa bililhon nga "ChatGPT Content Marketing AI Tool Usage Guide" sa direktoryo sa taas nga channel! 🌟
📚 Kini nga giya adunay daghang kantidad, 🌟Kini usa ka talagsaon nga oportunidad, ayaw palabya ​​kini! ⏰⌛💨
Share ug like kung ganahan ka!
Ang imong pagpaambit ug pag-like mao ang among padayon nga kadasig!

 

发表 评论

Ang imong email address dili mapatik. Gigamit ang mga kinahanglanon nga uma * Label

scroll sa ibabaw