Sut mae ymholiad MySQL yn trin data dyblyg?Hidlo i ddileu datganiad data dyblyg

MySQLSut mae ymholiadau yn trin data dyblyg?Hidlo i ddileu datganiad data dyblyg

MySQL Trin data dyblyg

Efallai y bydd cofnodion dyblyg mewn rhai tablau data MySQL.Mewn rhai achosion, rydym yn caniatáu bodolaeth data dyblyg, ond weithiau mae angen i ni ddileu'r data dyblyg hyn hefyd.

Yn y bennod hon, byddwn yn cyflwyno sut i atal data dyblyg yn y tabl data a sut i ddileu'r data dyblyg yn y tabl data.


Atal data dyblyg mewn tablau

Gallwch chi osod y maes penodedig yn y tabl data MySQL fel ALLWEDD CYNRADD neu UNIGRYW (unigryw) Mynegai i sicrhau unigrywiaeth data.

Gadewch i ni roi cynnig ar enghraifft: Nid oes mynegeion ac allweddi cynradd yn y tabl isod, felly mae'r tabl yn caniatáu cofnodion dyblyg lluosog.

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

Os ydych am osod y meysydd first_name ac last_name yn y tabl, ni ellir ailadrodd y data, gallwch osod y modd bysell gynradd ddwbl i osod unigrywiaeth y data. Os ydych yn gosod yr allwedd gynradd ddwbl, gwerth rhagosodedig yr allwedd honno Ni all fod yn NULL, ond gellir ei osod i NOT NULL.Fel a ganlyn:

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

Os byddwn yn gosod mynegai unigryw, yna wrth fewnosod data dyblyg, bydd y datganiad SQL yn methu â gweithredu'n llwyddiannus a thaflu gwall.

Y gwahaniaeth rhwng INSERT IGNORE INTO ac INSERT INTO yw bod INSERT IGNORE yn anwybyddu'r data sydd eisoes yn bodoli yn y gronfa ddata. Os nad oes data yn y gronfa ddata, bydd yn mewnosod data newydd, ac os oes data, bydd yn hepgor y data hwn.Yn y modd hwn, gellir cadw'r data presennol yn y gronfa ddata, a gellir cyflawni pwrpas mewnosod data yn y bwlch.

Mae'r enghraifft ganlynol yn defnyddio INSERT IGNORE INTO, sy'n gweithredu heb wall ac nid yw'n mewnosod data dyblyg yn y tabl 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)

RHOWCH IGNORE I MEWN Wrth fewnosod data, ar ôl i unigrywiaeth y cofnod gael ei osod, os caiff data dyblyg ei fewnosod, ni fydd gwall yn cael ei ddychwelyd, ond dim ond rhybudd fydd yn cael ei ddychwelyd.Ac AMNEWID I MEWN os oes cofnod cynradd neu unigryw, dilëwch ef yn gyntaf.Mewnosod cofnod newydd.

Ffordd arall o osod unigrywiaeth eich data yw ychwanegu mynegai UNIGRYW fel hyn:

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

Mae ystadegau'n dyblygu data

Isod byddwn yn cyfrif nifer y cofnodion dyblyg o enw_cyntaf ac enw_olaf yn y tabl:

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

Bydd y datganiad ymholiad uchod yn dychwelyd nifer y cofnodion dyblyg yn y tabl person_tbl.Yn gyffredinol, i ymholi am werthoedd dyblyg, gwnewch y canlynol:

  • Darganfyddwch pa golofn sy'n cynnwys gwerthoedd dyblyg posibl.
  • Defnyddiwch COUNT(*) yn rhestr dewis y golofn i restru'r colofnau hynny.
  • Colofnau a restrir yn y cymal GRŴP GAN .
  • Mae'r cymal HAVING yn gosod nifer yr ailadroddiadau sy'n fwy nag 1.

hidlo data dyblyg

Os oes angen i chi ddarllen data unigryw, gallwch ddefnyddio'r allweddair DISTINCT yn y datganiad SELECT i hidlo data dyblyg.

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

Gallwch hefyd ddefnyddio GRWP BY i ddarllen data unigryw o dabl:

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

data dad-ddyblyg

Os ydych chi am ddileu data dyblyg yn y tabl data, gallwch ddefnyddio'r datganiad SQL canlynol:

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;

Wrth gwrs, gallwch hefyd ychwanegu MYNEGAI (mynegai) a PRIMAY ALLWEDDOL (allwedd gynradd) yn y tabl data i ddileu cofnodion dyblyg yn y tabl.Dulliau fel isod:

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

Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) a rennir "Sut mae MySQL yn ymholi ac yn trin data dyblyg?Bydd Hidlo a Datganiadau Dad-ddyblygu" yn eich helpu.

Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-499.html

Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!

🔔 Byddwch y cyntaf i gael y "Canllaw Defnydd Offer AI Marchnata Cynnwys ChatGPT" gwerthfawr yng nghyfeiriadur uchaf y sianel! 🌟
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!

 

发表 评论

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. 必填 项 已 用 * Label

sgroliwch i'r brig