sql >> Database >  >> RDS >> Mysql

MySQL voegt alleen een nieuwe rij in als de combinatie van kolommen (die duplicaten toestaan) uniek is

Maak een samengestelde unieke index. Dit zal een willekeurig aantal duplicaten in de individuele velden toestaan, maar de combinatie moet uniek zijn.

CREATE UNIQUE INDEX ix_uq ON test (field1, field2, field3);

...en gebruik INSERT IGNORE in te voegen als de unieke index niet wordt geschonden. Als dat zo is, negeer dan gewoon de invoeging.

INSERT IGNORE INTO test (field1,field2,field3) VALUES (1,1,1);

Een SQLfiddle om te testen .

Als je wilt invoegen tenzij er een duplicaat is, en bijwerken als dat zo is, kun je ook INSERT INTO ... ON DUPLICATE KEY UPDATE gebruiken;

INSERT INTO test (field1, field2, field3) VALUES (1,1,1)
  ON DUPLICATE KEY UPDATE field4=field4+1;

Nog een SQLfiddle .




  1. Eén record verwijderen uit Entity Framework?

  2. tel valleien in db

  3. 1292 Onjuiste datetime-waarde voor kolom 'updated_at'

  4. Spaties inkorten (nieuwe regel en tabruimte) in een string in Oracle