Quomodo facit MySQL quaesitum ansam duplicatam datam?Filter ad removendum duplicata notitia constitutionis

MySQLQuomodo queries duplicatam datam tractamus?Filter ad removendum duplicata notitia constitutionis

MySQL Pertractatio duplicata notitia

In nonnullis tabulis MySQL datae duplicatae esse possunt, in quibusdam duplicatae notitiae existentiam concedimus, sed interdum etiam duplicata notitia opus est delere.

In hoc capite, quomodo duplicata notitia in tabula data vetat et quomodo duplicata notitia in tabula data deleat.


Preoccupo duplicata data in tabulis

Certum agrum in MySQL data mensa sicut potes ponere PRIMIGENUS CLAVIS uel Unicum (unicum) Index curet singularitatem data.

Experiamur exemplum: Non sunt indices et claves primariae in tabula infra, ideo mensa multiplex tabulas duplicatas concedit.

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

Si vis agros primum_nomen et last_nomen in tabula ponere, notitia iterari non potest, duplex primarium clavem modum ad singularitatem notitiarum pones. Si duplicem primariam clavem, valorem default illius clavis posuisti. NULLUS esse non potest, sed ad NOT NULLUS constitui potest.Ut sequitur:

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

Si singularem indicem posuimus, tum cum duplicata inserendo notitia, enuntiatio SQL feliciter exequi non erit et errorem iactare.

Differentia inter IGNORE INDO et INDO inserere est quod INDO IGNORO negligit notitias quae iam in datorum existunt. Si nulla notitia in datorum data est, novas notitias inseret, et, si data est, haec notitia transiliet.Hoc modo notitia existentia in datorum conservari potest, et propositum notitiae inserendae in hiatu obtineri potest.

Hoc exemplo utitur DISSIMULO INDO, qui sine errore et sine duplicata notitia in tabellam datam facit;

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)

IGNORE INDO Cum inserentes notitias, post singularitatem scripti referuntur, si duplicata notitia interponitur, nullus error reddetur, sed solum admonitio reddetur.ET REDO in Si prima aut singularis est memoria, delebitur prior.Novum commentarium inserere.

Alio modo ad singularitatem notitiarum tuarum apponenda est index unicus huius modi:

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

Statistics duplicare notitia

Infra numerum monumentorum duplicatorum primi_nominis et last_nominis in mensa numerabimus:

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

Propositio interrogationis superius indicata numerum duplicatorum in tabula person_tbl reddet.In genere, ut interrogationi valorum duplicatorum, haec fac:

  • Decerne utra columna valores duplicatas possibiles contineat.
  • Utere COMITI (*) in columna electa indicem ad illas columnas recensere.
  • Columnae enumerantur in clausula GROUP BY.
  • Pars I. Clausula repetitionum maiorem numerum ponit quam 1 .

filter duplicata notitia

Si legere debes notitias unicas, potes uti keyword distincte in propositione selecta ad duplicatam datam colum.

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

Potes etiam uti GROUP BY ut singulares notitias ex tabula legere:

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

deduplicare notitia

Si duplicata notata delere in tabula data voles, sequenti SQL constitutione uti potes:

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;

Scilicet, index (indice) et CLAVIS PRIMAY (clavis primarius) addere potes in tabula notata ad duplicatas tabulas delere.Methodi ut infra:

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

Spes Chen Weiliang Blog ( https://www.chenweiliang.com/ ) communicavit "Quomodo quaestio MySQL data et duplicata tractamus?Denunciationes eliquare et Deduplicationem te adiuvabunt.

Grata communicare nexum huius articuli:https://www.chenweiliang.com/cwl-499.html

Grata ad canalem Telegram Chen Weiliang's blog ut tardus updates!

🔔 Primus esto ut magni pretii "ChatGPT Content Marketing AI tool Usage Guide" in canali summo presul! 🌟
📚 Hic dux ingens valorem continet, 🌟 Haec rara occasio est, id non fallunt! ⏰⌛💨
Share and like si libet!
Tua communicatio et similia continua sunt motiva nostra!

 

发表 评论

Tua inscriptio electronica Quisque sit amet nisl. 必填 项 已 用 * Pittacium

volumen ad top