sql >> Databasteknik >  >> RDS >> Mysql

MySQL infogar bara ny rad om kombinationen av kolumner (som tillåter dubbletter) är unik

Skapa ett sammansatt unikt index. Detta tillåter valfritt antal dubbletter i de enskilda fälten, men kombinationen måste vara unik.

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

...och använd INSERT IGNORE att infoga om det unika indexet inte kränks. Om det är det, ignorera bara infogningen.

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

En SQLfiddle för testning .

Om du vill infoga såvida det inte finns en dubblett, och uppdatera om det finns, kan du också använda INSERT INTO ... ON DUPLICATE KEY UPDATE;

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

Ännu en SQLfiddle .




  1. Förbrukar MySQL betydligt mer resurser jämfört med andra DBMS?

  2. Hur man programmatiskt genererar DDL från Oracle-databas?

  3. Är det möjligt att konvertera mysql-tabellnamn från gemener till versaler i linux?

  4. Hur man hämtar data från sammanfogade tabeller med metoden query().