Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So vermeiden Sie das Einfügen doppelter Datensätze in MySQL

Manchmal müssen Sie möglicherweise doppelte Einfügungen verhindern, während Sie Zeilen zur MySQL-Tabelle hinzufügen. Sie können dies einfach mit der Anweisung INSERT IGNORE tun. In diesem Artikel sehen wir uns an, wie man das Einfügen doppelter Datensätze in MySQL vermeidet.


Wie man das Einfügen doppelter Datensätze in MySQL vermeidet

Hier sind die Schritte, um das Einfügen doppelter Datensätze in MySQL zu vermeiden. Es sind zwei Teile zu beachten. Zuerst müssen Sie einen UNIQUE-Spaltenindex für Ihre Tabelle erstellen. Als nächstes müssen Sie Daten mit INSERT IGNORE einfügen, um doppelte Datensätze zu vermeiden.

Nehmen wir an, Sie haben die folgende Tabelle sales(id, order_date, amount)

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


1. Erstellen Sie einen eindeutigen Index

Wir fügen einen UNIQUE-Index für id hinzu Spalte mit der ALTER TABLE-Anweisung.

Hier ist die Syntax zum Erstellen eines UNIQUE-Indexes in MySQL.

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

Hier ist die SQL-Abfrage, um einen UNIQUE-Index zu id hinzuzufügen Spalte in Verkauf Tabelle.

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


2. Daten einfügen mit INSERT IGNORE

Als nächstes werden wir Daten mit INSERT IGNORE einfügen.

Bevor wir fortfahren, lassen Sie uns einen Blick darauf werfen, was INSERT IGNORE in MySQL ist und wie INSERT IGNORE funktioniert.


Was ist EINFÜGEN IGNORIEREN?

INSERT IGNORE ist ein Befehl, der MySQL zwingt, Fehler zu ignorieren, wenn Sie Daten in eine MySQL-Tabelle einfügen.


Wie funktioniert INSERT IGNORE?

In unserem Fall haben wir bereits einen UNIQUE-Index für id erstellt Säule. Wenn wir die INSERT-Anweisung verwenden, um Daten mit doppelten Zeilen hinzuzufügen, gibt MySQL einen Fehler aus und stoppt die Abfrageausführung nach der ersten doppelten Zeile.

Wenn wir stattdessen INSERT IGNORE verwenden, verwirft MySQL stillschweigend das Einfügen einer doppelten Zeile, ohne einen Fehler zu erzeugen, und setzt die Abfrageausführung fort.

Wenn also ein Datensatz keine doppelten Daten enthält, fügt MySQL ihn wie gewohnt ein. Wenn es sich um einen doppelten Datensatz handelt, wird MySQL ihn einfach ignorieren.

Hier ist die SQL-Abfrage, um Daten ohne Duplikate in Verkauf einzufügen Tabelle.

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 |
+------+------------+--------+

Wie Sie sehen können, vermeidet MySQL das Einfügen doppelter Zeilen, ohne einen Fehler zu erzeugen.

Benötigen Sie ein Reporting-Tool für MySQL? Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!