Pirsa MySQL çawa daneyên dubare dike?Parzûn bikin da ku danezana ducar jêbirin

MySQLLêpirsîn çawa daneya dubare bi rê ve dibin?Parzûn bikin da ku danezana ducar jêbirin

MySQL Desthilatdariya daneyên dubare

Dibe ku di hin tabloyên daneya MySQL de tomarên dubare hebin.Di hin rewşan de, em destûrê didin hebûna daneyên dubare, lê carinan hewce ye ku em van daneyên dubare jî jêbirin.

Di vê beşê de, em ê destnîşan bikin ka meriv çawa di tabloya daneyê de daneya dubare û çawa di tabloya daneyê de daneyên dubare jêbirin.


Daneyên dubare yên di tabloyan de asteng bikin

Hûn dikarin qada diyarkirî di tabloya daneya MySQL de wekî saz bikin PRIMARY KEY an YEKBET (yekane) Indeksa ku yektaya daneyan piştrast bike.

Ka em mînakek biceribînin: Di tabloya jêrîn de pêdekek û mifteyên bingehîn tune, ji ber vê yekê tablo destûrê dide gelek tomarên dubare.

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

Heke hûn dixwazin zeviyên first_name û paşnavê di tabloyê de bicîh bikin, dane nayê dubare kirin, hûn dikarin moda mifteya seretayî ya ducar destnîşan bikin ku yekta daneyan destnîşan bikin. Heke hûn mifteya seretayî ya ducar destnîşan bikin, nirxa xwerû ya wê mifteyê nikare bibe NULL, lê dikare wekî NOT NULL were danîn.Bi vî awayî:

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

Ger em navnîşek bêhempa saz bikin, wê hingê dema ku daneya ducar têxin, dê daxuyaniya SQL bi serfirazî nekare û xeletiyek bavêje.

Cûdahiya INSERT IGNORE INTO û INSERT INTO ew e ku INSERT IGNORE daneyên ku berê di databasê de hene paşguh dike.Eger di databasê de dane tune be dê daneya nû têxe û heke dane hebe dê ji van daneyan derbas bibe.Bi vî awayî, daneyên heyî yên di databasê de dikare were parastin, û armanca têxistina daneyan di valahiyê de dikare were bidestxistin.

Mînaka jêrîn INSERT IGNORE INTO bikar tîne, ku bêyî xeletî dimeşîne û daneyên dubare nakeve tabloya daneyê:

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 INSERT IGNORE INTO Dema ku daneyan têxin, piştî ku taybetmendiya tomarê were danîn, heke daneyên dubare werin danîn, dê tu xeletî neyê vegerandin, lê tenê hişyariyek dê were vegerandin.Û LI LI LI DIKE, eger tomareke seretayî yan yekta hebe, pêşî wê jêbikin.Tomarek nû têxe.

Rêyek din ji bo danîna taybetmendiya daneyên xwe ev e ku meriv pêdekek UNIQUE bi vî rengî zêde bike:

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

Statîstîk daneyên dubare dike

Li jêr em ê di tabloyê de hejmara tomarên dubare yên nav û paşnav bijmêrin:

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

Daxuyaniya lêpirsîna jorîn dê hejmara tomarên dubare yên di tabloya person_tbl de vegerîne.Bi gelemperî, ji bo lêgerîna nirxên dubare, jêrîn bikin:

  • Diyar bike ka kîjan stûn nirxên dubare yên mumkun dihewîne.
  • Di navnîşa hilbijartî ya stûnê de COUNT(*) bikar bînin da ku wan stûnan navnîş bikin.
  • Stûnên di rêzika GROUP BY de hatine rêz kirin.
  • Xala HAVING hejmara dubareyan ji 1-ê mezintir destnîşan dike.

Parzûna daneyên dubare

Heke hûn hewce ne ku daneyên yekta bixwînin, hûn dikarin di daxuyaniya SELECT de peyva DISTINCT bikar bînin da ku daneyên dubare fîlter bikin.

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

Her weha hûn dikarin GROUP BY bikar bînin da ku daneyên bêhempa ji tabloyek bixwînin:

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

daneyan jêbirin

Heke hûn dixwazin daneyên dubare yên di tabloya daneyê de jêbirin, hûn dikarin daxuyaniya SQL ya jêrîn bikar bînin:

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;

Bê guman, hûn dikarin di tabloya daneyê de INDEX (index) û PRIMAY KEY (mifteya seretayî) jî lê zêde bikin da ku tomarên dubare yên di tabloyê de jêbirin.Rêbazên wekî jêrîn:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) parve kir "MySQL çawa daneyên dubare dipirse û bi rê ve dibe?Daxuyaniyên Parzûnkirin û Veqetandin" dê ji we re bibe alîkar.

Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-499.html

Hûn bi xêr hatin kanala Telegramê ya bloga Chen Weiliang da ku nûvekirinên herî dawî bistînin!

🔔 Bibin yê yekem ku di pelrêça jorîn a kanalê de "Rêbernameya Bikaranîna Amûra AI-ya Kirrûbirra Naveroka ChatGPT" ya bi qîmet bistîne! 🌟
📚 Ev rêber nirxek pir mezin dihewîne, 🌟Ev derfetek kêm e, wê ji dest nede! ⏰⌛💨
Heke hûn hez dikin parve bikin û hez bikin!
Parvekirin û ecibandinên we motîvasyona meya domdar e!

 

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

li jor bigerin