Når du jobber med databaser, møter du ofte forekomster der du trenger å finne dupliserte rader i en gitt databasetabell. Å finne duplikater kan tillate deg å bestemme forholdet mellom identiske verdier og alle verdiene i tabellen.
Du kan deretter bruke informasjonen som er samlet til å handle, for eksempel å fjerne duplikatverdier eller flytte dem til et midlertidig bord osv.
I dette innlegget lærer vi hvordan vi kan finne dupliserte verdier i en Oracle -tabell ved hjelp av Oracle Aggregate eller Analytic Functions.
Sette opp eksempeltabell og data
La oss sette opp en eksempeldata for illustrasjonsformål for å forstå hvordan vi bruker Oracle -funksjonene for å finne dupliserte verdier.
Hvis du har en eksisterende bord du ønsker å bruke, kan du hoppe over denne delen. Ellers kjører uttalelsen nedenfor for å opprette en eksempeltabell:
Lag tabellbestillinger_informasjonDeretter legger du til prøvedata med dupliserte verdier som vist:
Sett inn bestillinger_informasjon (id, kunde, ordre_date, produkt_id, mengde, pris)Når tabell- og eksempeldataene er klare, kan vi lære hvordan du finner duplikatrappene.
Oracle Finn dupliserte rader - Analytisk funksjon
I Oracle kan vi bruke Count () -funksjonen i forbindelse med over og partisjon etter klausul for å bestemme antall dupliserte poster i en gitt tabell.
Ta eksemplet som er vist nedenfor.
Velg bestillinger.*, count (*) over (partisjon etter kunde, ordre_date) number_of_occurenceSpørringen over skal returnere raden og antall ganger den oppstår i tabellen som vist:
For å få bare postene som vises mer enn en gang, kan vi bruke en WHERE -klausul som:
med item_count som (velg ordrer.*, count (*) over (partisjon etter kunde, ordre_date) number_of_occurenceProduksjon:
Oracle Finn dupliserte verdier - Aggregate Function
En annen metode vi kan bruke for å finne dupliserte poster i en tabell er gruppen etter klausul. Vi kan deretter bestemme antall ganger en gitt post skjer i hver gruppe ved å bruke telling () -funksjonen. Hvis en rad vises mer enn en gang, er det en duplikat.
Et eksempel er som vist:
plukke ut *Den resulterende informasjonen er som vist:
Som vi kan se, lar spørringen oss få dupliserte rader fra måltabellen.
Konklusjon
I denne opplæringen oppdaget du to hovedmetoder for å bestemme dupliserte rader fra en gitt database.