Nola kudeatzen ditu MySQL kontsultak datu bikoiztuak?Iragazi datu bikoiztuak kentzeko

MySQLNola kudeatzen dituzte kontsultek datu bikoiztuak?Iragazi datu bikoiztuak kentzeko

MySQL Datu bikoiztuak maneiatzea

MySQL datu-tauletan erregistro bikoiztuak egon daitezke. Zenbait kasutan, datu bikoiztuak egotea onartzen dugu, baina batzuetan datu bikoiztuak ere ezabatu behar ditugu.

Kapitulu honetan, datu-taulan bikoiztutako datuak nola saihestu eta datu-taulan bikoiztutako datuak nola ezabatu azalduko dugu.


Saihestu tauletan datu bikoiztuak

MySQL datu-taulan zehaztutako eremua honela ezar dezakezu LEHEN GAKOA edo BAKARRA (bakarra) Datuen berezitasuna ziurtatzeko indizea.

Saia gaitezen adibide bat: beheko taulan ez dago indizerik eta gako nagusirik, beraz, taulak bikoiztutako erregistro anitz onartzen ditu.

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

Taulan lehen_izena eta abizena eremuak ezarri nahi badituzu, datuak ezin dira errepikatu, lehen mailako gako bikoitza modua ezar dezakezu datuen berezitasuna ezartzeko. Gako nagusi bikoitza ezartzen baduzu, gako horren balio lehenetsia ezin da NULL izan, baina NOT NULL gisa ezar daiteke.Horrela:

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

Indize esklusibo bat ezartzen badugu, datu bikoiztuak txertatzean, SQL instrukzioak huts egingo du arrakastaz exekutatuko eta errore bat botako du.

INSERT IGNORE INTO eta INSERT INTO-ren arteko aldea da INSERT IGNORE datu-basean lehendik dauden datuak alde batera uzten dituela. Datu-basean daturik ez badago, datu berriak txertatuko ditu, eta datuak egonez gero, datu horiek saltatuko ditu.Horrela, datu-basean dauden datuak gorde daitezke, eta hutsunean datuak txertatzeko helburua lortu.

Hurrengo adibidean INSERT IGNORE INTO erabiltzen da, akatsik gabe exekutatzen dena eta ez ditu datu bikoiztuak datu-taulan txertatzen:

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 Datuak txertatzean, erregistroaren berezitasuna ezarri ondoren, datu bikoiztuak txertatzen badira, ez da errorerik itzuliko, abisu bat bakarrik itzuliko da.Eta ORDEZTU INTO erregistro nagusia edo bakarra badago, ezabatu lehenik.Txertatu erregistro berri bat.

Zure datuen berezitasuna ezartzeko beste modu bat indize UNIQUE bat gehitzea da:

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

Estatistikak datuak bikoizten ditu

Jarraian, taulan izen_abizenak eta abizenak bikoiztutako erregistro kopurua zenbatuko dugu:

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

Goiko kontsulta adierazpenak pertsona_tbl taulako erregistro bikoiztuen kopurua itzuliko du.Oro har, balio bikoiztuak bilatzeko, egin hau:

  • Zehaztu zein zutabe dituen balio bikoiztu posibleak.
  • Erabili COUNT(*) zutabe hautatzeko zerrendan zutabe horiek zerrendatzeko.
  • GROUP BY klausulan zerrendatutako zutabeak.
  • HAVING klausulak 1 baino handiagoa den errepikapen kopurua ezartzen du.

iragazi datu bikoiztuak

Datu bakarrak irakurri behar badituzu, DISTINCT gako-hitza erabil dezakezu SELECT instrukzioan bikoiztutako datuak iragazteko.

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

GROUP BY ere erabil dezakezu taula bateko datu bakarrak irakurtzeko:

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

datuak bikoiztu

Datu bikoiztuak datu-taulan ezabatu nahi badituzu, SQL instrukzio hau erabil dezakezu:

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;

Jakina, INDEX (indizea) eta PRIMAY KEY (gako nagusia) ere gehi ditzakezu datu-taulan, taulako erregistro bikoiztuak ezabatzeko.Ondorengo metodoak:

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

Hope Chen Weiliang bloga ( https://www.chenweiliang.com/ ) partekatu du "Nola kontsultatzen eta kudeatzen ditu MySQL-k datu bikoiztuak?Iragazi eta deduplicazio adierazpenak" lagunduko dizu.

Ongi etorri artikulu honen esteka partekatzera:https://www.chenweiliang.com/cwl-499.html

Ongi etorri Chen Weiliang-en blogeko Telegram kanalera azken eguneraketak jasotzeko!

🔔 Izan zaitez kanalaren goiko direktorioan "ChatGPT Content Marketing AI Tool Erabilera Gida" baliotsua lortzen lehena! 🌟
📚 Gida honek balio handia du, 🌟Aukera arraroa da hau, ez galdu! ⏰⌛💨
Partekatu eta gustatzen bazaizu!
Zure partekatzea eta gustukoak dira gure etengabeko motibazioa!

 

发表 评论

Zure helbide elektronikoa ez da argitaratuko. 必填 项 已 用 * 标注

joan goian