MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



Det finns ofta motstridiga data i tabeller eller resultatuppsättningar. Det är också tidskrävande att korrigera, och ofta måste upprepade poster undvikas. Det är nödvändigt att identifiera dubbletter och ta bort dem från endera tabellen. I det här avsnittet beskrivs hur du undviker att dubblettdata visas i en tabell och hur du eliminerar nuvarande dubblettposter. I den här guiden lär du dig att använda INSERT IGNORE -klausulen för att undvika felet.

Syntax:

Här är syntaxen för INSERT IGNORE -frågan.







>>INSERT IGNORE INTO table_name(kol1, kol2, kol3)VÄRDEN(value_list),(value_list),(value_list);

INSERT IGNORE via Workbench:

Öppna din MySQL Workbench 8.0 från ditt system och anslut den till databasinstansen.





I kommandofältet måste du skapa en tabell Anställd med fyra kolumner där en av dem måste anges som UNIK. Prova nedanstående fråga i navigeringsfrågområdet för att skapa den här tabellen. Markera hela frågan och klicka på blixtskylten för att köra den.





>>SKAPA TABELL Medarbetare(ID int PRIMÄR NYCKEL INTE NULL, Namn varchar(femtio)NOT NULL, Age Varchar(femtio), Lön varchar(femtio), UNIK(ID));

Efter skapandet kan du hitta tabellanställda i listan under alternativet Tabeller under databasdata.



I rutnätvyn kan du ange posterna utan att skriva någon fråga. Så, öppna rutvyn för tabellanställd och lägg till några poster i den som visas nedan. Vi har skrivit in alla unika poster utan några dubbletter. Tryck på 'Apply' -knappen för att tillämpa ändringarna.

Ett nytt fönster öppnas med relevanta frågor relaterade till de poster vi har angett ovan. Denna skärm kan kallas en Review -skärm. Om du vill ändra något kan du göra det här. Annars trycker du på knappen Apply för att utföra frågorna.

Som du kan se har frågan körts framgångsrikt och posterna sparas i databasen och dess tabell Anställd. Det skulle ha genererat ett fel om vi hade lagt till ett dubbelt värde i kolumn -ID: t. Tryck på knappen Slutför.

Det här handlade om rutnätvyn. Nu kommer vi att infoga poster via frågeområdet. Under tiden har vi lagt in dubbletter av poster den här gången för att kontrollera utmatningen. Så vi har försökt nedanstående INSERT -fråga där vi har två värdelistor. Båda värdelistorna har samma värde i kolumnen 'ID'. Välj frågan och tryck på flash -tecknet för att köra frågan.

Frågan fungerar inte korrekt och den genererar ett fel på grund av de dubblerade värdena i INSERT -kommandot som visas i bilden.

Försök nu med samma fråga ovan med INSERT IGNORE -satsen och kör den som presenterad.

Du kan se att det inte genererar ett fel i utmatningsområdet, men det ger en varning om att kommandot innehåller dubblettvärden.

Uppdatera rutnätvy för tabellanställd. INSERT IGNORE -frågan har fungerat hälften. Den infogade den första listan med värden i tabellen, men den andra listan med värden har ignorerats på grund av det upprepade värdet 13.

INSERT IGNORE via Command-Line Shell:

För att förstå detta koncept, låt oss öppna MySQL-kommandorads klientskal i ditt system. När du frågar skriver du ditt MySQL -lösenord för att börja arbeta med det.

Nu är det dags att skapa ett bord. Prova kommandot nedan för att göra det. Vi har skapat en tabell med namnet 'minister' medan en av dess spalter har en UNIK begränsning. Det är klart att kolumn -ID bara accepterar de unika värdena och inte dubblettvärdena.

>>SKAPA TABELL data. Administrera(Mid INT PRIMARY KEY UNIQUE NOT NULL, Name VARCHAR(Fyra fem), City VARCHAR(Fyra fem));

Frågan fungerar på rätt sätt och tabellen har skapats. För att förstå INSERT IGNORE -klausulen måste du först se det enkla INSERT -kommandot som fungerar. Om du använder INSERT -kommandot för att infoga flera informationsdata i en tabell, avbryter MySQL transaktionen och genererar ett undantag om ett fel inträffar under hela behandlingen. Som en konsekvens har tabellen inga rader tillagda. Låt oss infoga den första posten i tabellministern med hjälp av frågan nedan. Frågan fungerar framgångsrikt eftersom tabellen för närvarande är tom och det inte finns någon post att motsvara.

Eftersom kolumn-ID är UNIKT kommer det att generera ett fel när vi försöker instruktionen nedan på kommandoradsskalet. Detta beror på att vi har lagt till värdet 11 i den föregående frågan, och på grund av den UNIKA nyckeln tillåter det oss inte att lägga till det upprepade värdet igen.

Därför kan vi vid kontroll av tabellen se att tabellen bara har 1 post tillagd av den första INSERT -frågan.

>>VÄLJ*FRÅN data.minister;

Om du däremot använder INSERT IGNORE -satsen kommer de felaktiga dataraderna som utlöser felet att förbises och kommer bara att mata in de korrekta. I kommandot nedan har vi använt kommandot INSERT IGNORE för att undvika att lägga till upprepade värden i tabellen och förbise felet. Som du kan se har den första värdelistan ett duplikatvärde 11 samma som i den föregående frågan. Även om den andra listan med värden är unik, kommer den att visa 1 post införd i tabellen, vilket är den andra listan med värden. MySQL indikerar också att endast 1 post har infogats och 1 varning genereras i meddelandet. Du kan då anta att om vi använder INSERT IGNORE -klausulen, ger MySQL en varning.

Som du kan se från nedanstående utdata har vi bara två poster i den här tabellen - första listan över värden som tillhandahålls i ovanstående fråga, som förbises.

>>VÄLJ*FRÅN data.minister;

Slutsats:

Vi har gjort alla nödvändiga exempel på INSERT IGNORE på dubblettvärden via MySQL Workbench och MySQL kommandorads klientskal.