Dette innlegget vil diskutere å sette inn en ny rad bare hvis data ikke eksisterer allerede i MySQL -tabellen. Før du begynner med dette innlegget, må du forsikre deg om at du er logget inn på MySQL Local Server og har valgt en database der du vil jobbe.
Sett inn en ny rad bare hvis data ikke eksisterer ved hjelp av "Sett inn ignorering" -uttalelsen "
Vel, svaret på spørsmålet i tittelen er ganske enkelt og greit. Bare bruk "SETT INN”Søkeord sammen med“OVERSE”Nøkkelord. Dette vil sørge for at de nye dataene eller innsatsspørsmålet bare blir utført når ingen tidligere oppføring av dataene blir funnet i MySQL. For å få en kort oversikt over dette, ta en titt på følgende syntaks:
Sett inn ignorering i [tabellnavn] ([Column1-Name], [Column2-Name], [Column3-Name]) Verdier ([Value1], [Value2], [Value3]);La oss se et eksempel hvis brukeren ønsker å oppgi en radverdi "1”,“John”Og“Doe”I“Kunde”Tabell for kolonnene”Id,""Fornavn”Og“EtternavnHenholdsvis. Kjør denne spørringen for å sette inn disse verdiene hvis noen hvis ingen rad har disse verdiene eksisterer allerede:
Velg * fra kunde;Utgangen inneholder to tabeller som viser data fra tabellen før og etter utførelse av spørringen. Du kan merke at ingenting endrer seg i tabellen fordi raden allerede eksisterte, så MySQL har ignorert innsettingsprosessen uten å vise feilen:
Sett inn en ny rad bare hvis data ikke eksisterer ved hjelp av "hvor ikke eksisterer" -klausulen
I mysql, "HVOR EKSISTERER IKKE”Klausul forhindrer innsetting av rader hvis de allerede eksisterer i tabellen når den brukes i“Sett inn i”Uttalelse med et underlag for å definere en tilstand. Når denne klausulen brukes med subquery “(Velg * fra [tabell-navn] [kolonnenavn] = [uttrykk]);”Sjekker om det finnes en rad i tabellen som oppfyller tilstanden. Hvis det eksisterer en rad, "Der det ikke eksisterer”-Bestemmelsen vil returnere en falsk verdi, og“PLUKKE UT”Uttalelsen vil ikke returnere noen rader. Som et resultat vil ikke raden bli satt inn i tabellen. Syntaksen er gitt nedenfor:
Sett inn i [tabellnavn] ([kolonne1-navn], [Column2-Name], [Column3-Name])La oss se et eksempel hvis brukeren ønsker å sette inn en rad i ansattstabellen som inneholder verdier "1”,“Americanas”Og“Henriot”I kolonnene“id”,“Selskapsnavn”Og“Kontakt navnHenholdsvis. Men bare hvis en rad med en ID av "1”Finnes ikke i tabellen, eller det er ikke eksisterende. I det aktuelle tilfellet vil spørringen bli:
Velg * fra ansatt;Utgangen viser en ny rad som ikke er satt inn som rad med "id" lik "1”Eksisterte allerede.
Sett inn en ny rad bare hvis data ikke eksisterer ved hjelp av "On duplicate Key Update" -klausulen
Vel, en annen måte er å bruke “På duplikat nøkkeloppdatering”Klausul i MySQL. Ettersom denne klausulen vil bli brukt med "sett inn i" -spørsmålet som danner en "if-elv" -utførelse. Så dette betyr at dataene i tabellen bare vil bli oppdatert hvis de er unike. Ellers ville ingen endring oppstå. Den generelle syntaksen for dette er som følger:
Sett inn i [tabell-navn] ([kolonne1-navn], [kolonne2-navn], [Column3-Name]) Verdier ([Value1], [Value2], [Value3])La oss se et eksempel for å sette inn verdier i “2”,“Pascale”,“Nixon”,“London”,“Storbritannia”Og “(171) 555-7788" i bordet "Kunde”For kolonnene“Id”,“Fornavn”,“Etternavn”,“by”,“land”Og“TelefonHenholdsvis. Hvis raden ikke allerede eksisterer, vil den bli satt inn. Ellers vil den oppdatere verdiene der "Id = id”Tilstand møtes. Kjør denne spørringen:
Velg * fra kunde;Dette er tabellen før du kjører spørringen, du kan se “Id" lik "2" eksisterer ikke:
Etter å ha kjørt spørringen, vil denne spørringen sette inn nye rader i tabellen:
Du har satt inn en ny rad, ettersom data ikke eksisterer før du kjører spørringen.
Konklusjon
I MySQL, sett inn en ny rad bare hvis data ikke eksisterer allerede ved å bruke "Sett inn ignorering”Uttalelse eller“Der det ikke eksisterer”Klausul i“Sett inn i”Uttalelse. En annen måte å gjøre dette på er å bruke "På duplikat nøkkeloppdatering”Klausul i“Sett inn i”Uttalelse for å oppdatere hvis raden allerede eksisterer. Ellers legger du til en ny rad. Innlegget diskuterte hvordan du bare setter inn en ny rad hvis data ikke eksisterer.