Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Najboljše prakse načrtovanja baze podatkov priporočajo uporabo omejitve UNIQUE za preprečevanje podvajanja v bazi podatkov. Ko pa delate s slabo zasnovano zbirko podatkov ali nečistimi podatki, boste morda morali sami poiskati dvojnike in jih ročno izbrisati.

Preberite, če želite izvedeti, kako najti dvojnike v zbirki podatkov SQL in kako jih izbrisati.

Ustvarite vzorčno zbirko podatkov

Za namene predstavitve ustvarite tabelo z imenom Uporabniki s stolpcem z imenom in rezultatom, tako da zaženete to poizvedbo SQL.

DROPTABELAČEOBSTAJAUporabniki;

USTVARJANJETABELAUporabniki (
pk_id int PRIMARNI KLJUČ,
ime VARCHAR (16),
rezultat INT,
);

Vstavite nekaj vzorčnih vrednosti tako, da zaženete to poizvedbo:

VSTAVIINTO
Uporabniki (pk_id, ime, rezultat)
VREDNOTE
(1, 'Jane', 20),
(2, 'Janez', 13),
(3, 'Alex', 32),
(4, 'Janez', 46),
(5, 'Jane', 20),
(6, 'Mary', 34),
(7, 'Jane', 20),
(8, 'Janez', 13)

Upoštevajte, da nekatere od teh vrstic vsebujejo podvojene vrednosti za stolpec imena.

Vabljeni, da jih preverite SQL ukazi in poizvedbe če potrebujete bolj poglobljeno razlago o tem, kako manipulirati z bazami podatkov z uporabo SQL.

Uporaba GROUP BY za iskanje podvojenih vrednosti

Ti lahko za razporeditev vrednosti uporabite stavek GROUP BY ki izpolnjujejo določene pogoje v isti skupini.

Recimo, da morajo biti imena v vzorčni tabeli edinstvena. Z GROUP BY lahko združite vrstice z istim imenom.

IZBERIime, ŠTEJTE(ime)
OD uporabnikov
ZDRUŽI PO imenu
ŠTETJE (ime) > 1

COUNT vam omogoča, da izberete vrstice, ki imajo več kot enega uporabnika z istim imenom.

Ko zaženete to poizvedbo, bo zbirka podatkov vrnila vrstice, ki vsebujejo Johna in Jane kot dvojnika.

Brisanje dvojnikov iz zbirke podatkov

Ko najdete dvojnike, jih boste morda želeli izbrisati s stavkom DELETE.

Za ta primer zaženite naslednjo poizvedbo:

Z cte AS (
IZBERI *
ROW_NUMBER() NAD (
RAZDELITEV PO
ime, rezultat
NAROČI PO
ime, rezultat
) R
OD
Uporabniki
)

IZBRIŠIOD cte
KJER je R > 1;

Ta poizvedba uporablja izraz CTE za iskanje dvojnikov in jih nato izbriše vse razen enega.

Zakaj bi morali izbrisati podvojene podatke

Brisanje podvojenih podatkov ni obvezno. Vendar vam omogoča, da sprostite prostor, ki ga uporabljajo podvojene vrstice.

Manj vrstic tudi pomeni, da se poizvedbe lahko izvajajo veliko hitreje, kar vodi do višje zmogljivosti. Uporabite poizvedbe v tej vadnici za pomoč pri iskanju in odstranjevanju dvojnikov iz baze podatkov SQL.