Conas a láimhseálann fiosrú MySQL sonraí dúblacha?Scag chun ráiteas sonraí dúblach a bhaint

MySQLConas a láimhseálann fiosruithe sonraí dúblacha?Scag chun ráiteas sonraí dúblach a bhaint

MySQL Láimhseáil sonraí dúblacha

D’fhéadfadh go mbeadh taifid dhúblacha i roinnt táblaí sonraí MySQL.I gcásanna áirithe, ceadaímid sonraí dúblacha a bheith ann, ach uaireanta caithfimid na sonraí dúblacha seo a scriosadh freisin.

Sa chaibidil seo, tabharfaimid isteach conas sonraí dúblacha a chosc sa tábla sonraí agus conas na sonraí dúblacha sa tábla sonraí a scriosadh.


Cosc a chur ar shonraí dúblacha i dtáblaí

Is féidir leat an réimse sonraithe a shocrú sa tábla sonraí MySQL mar PRIMARY EOCHAIR  Uathúil (uathúil) Innéacs chun uathúlacht na sonraí a chinntiú.

Déanaimis iarracht sampla: Níl aon innéacsanna agus eochracha príomhúla sa tábla thíos, mar sin ceadaíonn an tábla taifid dúblacha iolracha.

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

Más mian leat na réimsí first_name agus last_name a shocrú sa tábla, ní féidir na sonraí a athdhéanamh, is féidir leat an modh príomhúil dúbailte a shocrú chun uathúlacht na sonraí a shocrú. Má shocraíonn tú an eochair dúbailte, luach réamhshocraithe na heochrach sin ní féidir é a bheith NULLComment, ach is féidir é a shocrú go NÍL.Mar seo a leanas:

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

Má shocraímid innéacs uathúil, ansin nuair a chuirtear isteach sonraí dúblacha, ní theipeann ar an ráiteas SQL a fhorghníomhú go rathúil agus earráid a chaitheamh.

Is é an difríocht idir INSERT IGNORE INTO agus INSERT INTO ná go ndéanann INSERT IGNORE neamhaird ar na sonraí atá sa bhunachar sonraí cheana féin. Mura bhfuil sonraí sa bhunachar sonraí, cuirfidh sé sonraí nua isteach, agus má tá sonraí ann, scipfidh sé na sonraí seo.Ar an mbealach seo, is féidir na sonraí atá ann cheana féin sa bhunachar sonraí a chaomhnú, agus is féidir an cuspóir sonraí a chur isteach sa bhearna a bhaint amach.

Úsáideann an sampla seo a leanas INSERT IGNORE INTO, a fheidhmíonn gan earráid agus nach gcuireann sonraí dúblacha isteach sa tábla sonraí:

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 IN Nuair a bheidh sonraí á gcur isteach, tar éis uathúlacht an taifid a shocrú, má chuirtear sonraí dúblacha isteach, ní sheolfar aon earráid ar ais, ach ní thabharfar ach rabhadh ar ais.Agus ATHSHOLÁTHAR isteach má tá taifead príomhúil nó uathúil ann, scrios ar dtús é.Cuir isteach taifead nua.

Bealach eile chun uathúlacht do shonraí a shocrú ná innéacs UATHACH mar seo a chur leis:

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

Déanann staitisticí sonraí a dhúbailt

Anseo thíos déanfaimid líon na dtaifead dúblach den chéad_ainm agus den ainm deiridh a chomhaireamh sa tábla:

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

Tabharfaidh an ráiteas fiosrúcháin thuas líon na dtaifead dúblach ar ais sa tábla person_tbl.Go ginearálta, chun luachanna dúblacha a fhiosrú, déan an méid seo a leanas:

  • Socraigh cén colún ina bhfuil luachanna dúblacha féideartha.
  • Úsáid COUNT(*) sa liosta roghnaithe colún chun na colúin sin a liostú.
  • Colúin atá liostaithe sa chlásal GRÚPA DE RÉIR.
  • Socraíonn an clásal HAVING líon na n-athrá níos mó ná 1.

scagaire sonraí dúblacha

Más gá duit sonraí uathúla a léamh, is féidir leat an eochairfhocal DISTINCT sa ráiteas SELECT a úsáid chun sonraí dúblacha a scagadh.

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

Is féidir leat GROUP BY a úsáid freisin chun sonraí uathúla ó thábla a léamh:

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

sonraí dídhúbailt

Más mian leat sonraí dúblacha a scriosadh sa tábla sonraí, is féidir leat an ráiteas SQL seo a leanas a úsáid:

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;

Ar ndóigh, is féidir leat INDEX (innéacs) agus PRIMAY KEY (eochair phríomha) a chur sa tábla sonraí freisin chun taifid dhúbailt sa tábla a scriosadh.Modhanna mar atá thíos:

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

Tá súil agam Blag Chen Weiliang ( https://www.chenweiliang.com/ ) shared” Conas a dhéanann MySQL sonraí dúblacha a fhiosrú agus a láimhseáil?Ráitis Scagtha agus Dídhúbailte" a chabhróidh leat.

Fáilte romhat nasc an ailt seo a roinnt:https://www.chenweiliang.com/cwl-499.html

Fáilte chuig cainéal Telegram de bhlag Chen Weiliang chun na nuashonruithe is déanaí a fháil!

🔔 Bí ar an gcéad duine a gheobhaidh an "Treoir Úsáide Uirlisí AI Margaíochta Ábhair ChatGPT" luachmhar san eolaire barr na gcainéal! 🌟
📚 Tá luach ollmhór sa treoir seo, 🌟 Seo deis annamh, ná caill é! ⏰⌛💨
Roinnigí agus más maith libh!
Is iad do chomhroinnt agus do thaitin ár spreagadh leanúnach!

 

发表 评论

Ní fhoilseofar do sheoladh ríomhphoist. Úsáidtear réimsí riachtanacha * Lipéad

scrollaigh go dtí an barr