Ciamar a làimhsicheas ceist MySQL dàta dùblaichte?Criathrag gus aithris dàta dùblaichte a thoirt air falbh

MySQLCiamar a làimhsicheas ceistean dàta dùblaichte?Criathrag gus aithris dàta dùblaichte a thoirt air falbh

MySQL A’ làimhseachadh dàta dùblaichte

Is dòcha gu bheil clàran dùblaichte ann an cuid de chlàran dàta MySQL. Ann an cuid de chùisean, leigidh sinn le dàta dùblaichte a bhith ann, ach uaireannan feumaidh sinn an dàta dùblaichte sin a dhubhadh às.

Anns a’ chaibideil seo, bheir sinn a-steach mar a chuireas tu casg air dàta dùblaichte sa chlàr dàta agus mar a sguabas tu às an dàta dùblaichte sa chlàr dàta.


Cuir casg air dàta dùblaichte ann an clàran

Faodaidh tu an raon ainmichte a shuidheachadh ann an clàr dàta MySQL mar PRÌOMHACHAS no AONAIR (sònraichte) Clàr-amais gus dèanamh cinnteach à sònraichteachd dàta.

Feuch sinn eisimpleir: Chan eil clàran-amais agus prìomh iuchraichean sa chlàr gu h-ìosal, agus mar sin tha an clàr a’ ceadachadh grunn chlàran dùblaichte.

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

Ma tha thu airson na raointean first_name agus last_name a shuidheachadh sa chlàr, chan urrainn an dàta a bhith air ath-aithris, faodaidh tu modh na h-iuchrach bun-sgoile dùbailte a shuidheachadh gus cho sònraichte sa tha an dàta a shuidheachadh. Ma shuidhicheas tu an iuchair bhun-sgoile dhùbailte, luach bunaiteach na h-iuchrach sin chan urrainn a bhith NULL, ach faodar a shuidheachadh gu NOT NULL.Mar 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)
);

Ma shuidhicheas sinn clàr-amais sònraichte, an uairsin nuair a chuireas sinn a-steach dàta dùblaichte, cha dèan an aithris SQL gu soirbheachail agus tilgidh sinn mearachd.

Is e an diofar eadar INSERT IGNORE INTO agus INSERT INTO gu bheil INSERT IGNORE a’ seachnadh an dàta a tha san stòr-dàta mu thràth. Mura h-eil dàta san stòr-dàta, cuiridh e dàta ùr a-steach, agus ma tha dàta ann, leumaidh e thairis air an dàta seo.San dòigh seo, faodar an dàta a th’ ann mar-thà anns an stòr-dàta a ghleidheadh, agus faodar an adhbhar airson dàta a chuir a-steach sa bheàrn a choileanadh.

Tha an eisimpleir a leanas a’ cleachdadh INSERT IGNORE INTO, a nì an gnìomh gun mhearachd agus nach cuir a-steach dàta dùblaichte a-steach don chlàr dàta:

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 Nuair a chuireas tu a-steach dàta, às deidh cho sònraichte sa tha an clàr a shuidheachadh, ma thèid dàta dùblaichte a chuir a-steach, cha tèid mearachd sam bith a thilleadh, ach cha tèid ach rabhadh a thilleadh.Agus ATHARRACHADH A-steach ma tha clàr bun-sgoile no sònraichte ann, cuir às dha an toiseach.Cuir a-steach clàr ùr.

Is e dòigh eile air cho sònraichte sa tha an dàta agad a shuidheachadh clàr-amais UNIQUE mar seo a chur ris:

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

Bidh staitistigs a’ dùblachadh dàta

Gu h-ìosal bidh sinn a’ cunntadh an àireamh de chlàran dùblaichte de first_name agus last_name sa chlàr:

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

Tillidh an aithris ceiste gu h-àrd an àireamh de chlàran dùblaichte sa chlàr person_tbl.San fharsaingeachd, airson luachan dùblaichte a cheasnachadh, dèan na leanas:

  • Obraich a-mach dè an colbh anns a bheil luachan dùblaichte comasach.
  • Cleachd COUNT(*) ann an liosta tagh colbh gus na colbhan sin a liostadh.
  • Colbhan air an liostadh ann an clàs GROUP BY.
  • Tha an clàs HAVING a’ suidheachadh an àireamh de ath-aithris nas motha na 1.

sìoladh dàta dùblaichte

Ma dh’fheumas tu dàta gun samhail a leughadh, faodaidh tu am prìomh fhacal DISTINCT san aithris SELECT a chleachdadh gus dàta dùblaichte a shìoladh.

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

Faodaidh tu cuideachd GROUP BY a chleachdadh gus dàta sònraichte a leughadh bho bhòrd:

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

dàta dì-dhùblachadh

Ma tha thu airson dàta dùblaichte a sguabadh às sa chlàr dàta, faodaidh tu an aithris SQL a leanas a chleachdadh:

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;

Gu dearbh, faodaidh tu cuideachd INDEX (clàr-amais) agus PRIMAY KEY (iuchrach bun-sgoile) a chuir ris a’ chlàr dàta gus clàran dùblaichte sa chlàr a dhubhadh às.Dòighean-obrach mar a leanas:

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

An dòchas blog Chen Weiliang ( https://www.chenweiliang.com/ ) co-roinnte “Ciamar a tha MySQL a’ ceasnachadh agus a’ làimhseachadh dàta dùblaichte?Cuidichidh sìoladh agus aithrisean dùblachadh" thu.

Fàilte gus ceangal an artaigil seo a cho-roinn:https://www.chenweiliang.com/cwl-499.html

Fàilte don t-sianal Telegram de bhlog Chen Weiliang gus na h-ùrachaidhean as ùire fhaighinn!

🔔 Bi mar a’ chiad fhear a fhuair an “Stiùireadh Cleachdadh Inneal AI Margaidheachd Susbaint ChatGPT” luachmhor ann an eòlaire mullach an t-seanail! 🌟
📚 Tha luach mòr anns an stiùireadh seo, 🌟 Is e cothrom ainneamh a tha seo, na caill e! ⏰⌛💨
Roinn agus toil ma thogras tu!
Is e do roinneadh agus do rudan mar ar brosnachadh leantainneach!

 

发表 评论

Cha tèid do sheòladh puist-d fhoillseachadh. 必填 项 已 用 * Label

sgrolaich gu mullach