Hoe gaat MySQL-query om met dubbele gegevens?Filter om dubbele gegevensverklaring te verwijderen

MySQLHoe gaan query's om met dubbele gegevens?Filter om dubbele gegevensverklaring te verwijderen

MySQL Dubbele gegevens verwerken

Er kunnen dubbele records in sommige MySQL-gegevenstabellen zijn.In sommige gevallen staan ​​we het bestaan ​​van dubbele gegevens toe, maar soms moeten we deze dubbele gegevens ook verwijderen.

In dit hoofdstuk laten we zien hoe u dubbele gegevens in de gegevenstabel kunt voorkomen en hoe u dubbele gegevens in de gegevenstabel kunt verwijderen.


Dubbele gegevens in tabellen voorkomen

U kunt het opgegeven veld in de MySQL-gegevenstabel instellen als: HOOFDSLEUTEL of UNIEK (uniek) Index om de uniciteit van gegevens te waarborgen.

Laten we een voorbeeld proberen: Er zijn geen indexen en primaire sleutels in de onderstaande tabel, dus de tabel staat meerdere dubbele records toe.

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

Als u de velden voornaam en achternaam in de tabel wilt instellen, kunnen de gegevens niet worden herhaald, kunt u de dubbele primaire sleutelmodus instellen om de uniciteit van de gegevens in te stellen.Als u de dubbele primaire sleutel instelt, wordt de standaardwaarde van die sleutel kan niet NULL zijn, maar kan worden ingesteld op NOT NULL.Als volgt:

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

Als we een unieke index instellen, kan de SQL-instructie bij het invoegen van dubbele gegevens niet met succes worden uitgevoerd en een fout veroorzaken.

Het verschil tussen INSERT IGNORE INTO en INSERT INTO is dat INSERT IGNORE de gegevens negeert die al in de database aanwezig zijn. Als er geen gegevens in de database zijn, worden nieuwe gegevens ingevoegd en als er gegevens zijn, worden deze gegevens overgeslagen.Op deze manier kunnen de bestaande gegevens in de database worden behouden en kan het doel van het invoegen van gegevens in de kloof worden bereikt.

In het volgende voorbeeld wordt INSERT IGNORE INTO gebruikt, dat foutloos en zonder dubbele gegevens in de gegevenstabel wordt uitgevoerd:

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 Bij het invoegen van gegevens, nadat de uniciteit van het record is ingesteld, als dubbele gegevens worden ingevoegd, wordt er geen fout geretourneerd, maar wordt alleen een waarschuwing geretourneerd.En VERVANG IN in Als er een primair of uniek record is, wordt dit eerst verwijderd.Voeg een nieuw record in.

Een andere manier om de uniciteit van uw gegevens in te stellen, is door een UNIEKE index zoals deze toe te voegen:

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

Statistieken dubbele gegevens

Hieronder tellen we het aantal dubbele records van voornaam en achternaam in de tabel:

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

De bovenstaande query-instructie retourneert het aantal dubbele records in de person_tbl-tabel.Als u naar dubbele waarden wilt zoeken, doet u in het algemeen het volgende:

  • Bepaal welke kolom mogelijke dubbele waarden bevat.
  • Gebruik COUNT(*) in de kolomselectielijst om die kolommen weer te geven.
  • Kolommen die worden vermeld in de GROUP BY-clausule.
  • De HAVING-component stelt het aantal herhalingen in dat groter is dan 1.

dubbele gegevens filteren

Als u unieke gegevens moet lezen, kunt u het sleutelwoord DISTINCT in de SELECT-instructie gebruiken om dubbele gegevens te filteren.

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

U kunt GROUP BY ook gebruiken om unieke gegevens uit een tabel te lezen:

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

gegevens ontdubbelen

Als u dubbele gegevens in de gegevenstabel wilt verwijderen, kunt u de volgende SQL-instructie gebruiken:

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;

Natuurlijk kunt u ook INDEX (index) en PRIMAY KEY (primaire sleutel) toevoegen aan de gegevenstabel om dubbele records in de tabel te verwijderen.Methoden zoals hieronder:

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

Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "Hoe bevraagt ​​en verwerkt MySQL dubbele gegevens?Filtering en Deduplicatie Statements" zal u helpen.

Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-499.html

Welkom op het Telegram-kanaal van Chen Weiliang's blog voor de laatste updates!

🔔 Wees de eerste die de waardevolle "ChatGPT Content Marketing AI Tool Usage Guide" in de bovenste kanaaldirectory ontvangt! 🌟
📚 Deze gids bevat enorme waarde, 🌟Dit is een zeldzame kans, mis hem niet! ⏰⌛💨
Deel en like als je wilt!
Uw delen en likes zijn onze voortdurende motivatie!

 

发表 评论

Uw e-mailadres wordt niet gepubliceerd. 必填 项 已 用 * 标注

scroll naar boven