sql >> Database >  >> RDS >> Mysql

Hoe te voorkomen dat dubbele records in MySQL worden ingevoegd?

Soms moet u dubbele invoeging voorkomen tijdens het toevoegen van rijen aan de MySQL-tabel. U kunt dit eenvoudig doen met de instructie INSERT IGNORE. In dit artikel bekijken we hoe u kunt voorkomen dat u dubbele records in MySQL invoegt.


Hoe u dubbele records in MySQL kunt invoegen

Hier zijn de stappen om te voorkomen dat dubbele records in MySQL worden ingevoegd. Er zijn twee delen om in gedachten te houden. Eerst moet u een UNIEKE kolomindex voor uw tabel maken. Vervolgens moet u gegevens invoegen met INSERT IGNORE om dubbele records te voorkomen.

Stel dat u de volgende tabel verkoop(id, order_date, bedrag) . heeft

mysql> create table sales(
          id int, 
          order_date date, 
          amount int
          );


1. Unieke index maken

We voegen een UNIEKE index toe voor id kolom met de instructie ALTER TABLE.

Hier is de syntaxis om een ​​UNIEKE index in MySQL te maken.

alter table table_name ADD UNIQUE INDEX(
        column_name1, 
        column_name2,
        ...
        column_nameN
        );

Hier is de SQL-query om UNIEKE index toe te voegen aan id kolom in verkoop tafel.

mysql> alter table sales ADD UNIQUE INDEX(id);


2. Gegevens invoegen met INSERT IGNORE

Vervolgens zullen we gegevens invoegen met INSERT IGNORE.

Laten we, voordat we verder gaan, kijken naar wat INSERT IGNORE is in MySQL en hoe INSERT IGNORE werkt.


Wat is INSERT IGNORE?

INSERT IGNORE is een commando dat MySQL dwingt fouten te negeren wanneer u gegevens invoegt in een MySQL-tabel.


Hoe werkt INSERT IGNORE?

In ons geval hebben we al een UNIEKE index gemaakt voor id kolom. Als we de INSERT-instructie gebruiken om gegevens met dubbele rijen toe te voegen, geeft MySQL een fout en stopt de uitvoering van de query na de eerste dubbele rij.

In plaats daarvan, wanneer we INSERT IGNORE gebruiken, zal MySQL het invoegen van een dubbele rij stil weggooien zonder een fout te genereren, en doorgaan met het uitvoeren van de query.

Dus als een record geen dubbele gegevens bevat, zal MySQL het zoals gebruikelijk invoegen. Als het een duplicaat record is, zal MySQL het gewoon negeren.

Hier is de SQL-query om gegevens zonder duplicaten in te voegen in sales tafel.

mysql> mysql> insert ignore into sales(id,order_date,amount)
     values(1, '2021-01-01', 250),
     (1, '2021-01-01', 250),
     (2, '2021-01-02', 200),
     (3, '2021-01-03', 150),
     (2, '2021-01-02', 200);
Query OK, 3 rows affected (0.10 sec)
Records: 5  Duplicates: 2  Warnings: 0

mysql> select * from sales;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2021-01-01 |    250 |
|    2 | 2021-01-02 |    200 |
|    3 | 2021-01-03 |    150 |
+------+------------+--------+

Zoals u kunt zien, vermijdt MySQL het invoegen van dubbele rijen, zonder enige fout te genereren.

Een rapportagetool voor MySQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Cast int naar varchar

  2. Haal het teken tussen de eerste 2 speciale tekens in SQL

  3. Hoe declareer en gebruik ik variabelen in PL/SQL zoals ik doe in T-SQL?

  4. Geef waarden door die uit een bestand zijn gelezen als invoer voor een SQL-query in Oracle