Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Najlepšie postupy návrhu databázy odporúčajú použiť obmedzenie UNIQUE, aby sa zabránilo duplikátom v databáze. Pri práci so zle navrhnutou databázou alebo nečistými údajmi však možno budete musieť nájsť duplikáty sami a odstrániť ich ručne.

Čítajte ďalej a dozviete sa, ako nájsť duplikáty v databáze SQL a ako ich odstrániť.

Vytvorte vzorovú databázu

Na demonštračné účely vytvorte tabuľku s názvom Používatelia so stĺpcom mena a skóre spustením tohto dotazu SQL.

POKLESTABLEAKEXISTUJEPoužívatelia;

VYTVORIŤTABLEPoužívatelia (
pk_id int PRIMÁRNY KĽÚČ,
meno VARCHAR (16),
skóre INT,
);

Spustením tohto dotazu vložte niekoľko vzorových hodnôt:

VLOŽIŤDO
Používatelia (pk_id, meno, skóre)
HODNOTY
(1, 'Jane', 20),
(2, 'John', 13),
(3, 'Alex', 32),
(4, 'John', 46),
(5, 'Jane', 20),
(6, 'Mary', 34),
(7, 'Jane', 20),
(8, 'John', 13)

Všimnite si, že niektoré z týchto riadkov obsahujú duplicitné hodnoty pre stĺpec názvu.

instagram viewer

Neváhajte a pozrite si tieto SQL príkazy a dotazy ak potrebujete podrobnejšie vysvetlenie, ako manipulovať s databázami pomocou SQL.

Použitie GROUP BY na nájdenie duplicitných hodnôt

Môžeš na usporiadanie hodnôt použite príkaz GROUP BY ktoré spĺňajú určité podmienky v tej istej skupine.

Povedzme, že názvy vo vzorovej tabuľke musia byť jedinečné. Na zoskupenie riadkov s rovnakým názvom môžete použiť GROUP BY.

VYBRAŤnázov, COUNT(názov)
OD používateľov
GROUP PODĽA mena
HAVING COUNT (meno) > 1

COUNT vám umožňuje vybrať riadky, ktoré majú viac ako jedného používateľa s rovnakým menom.

Keď spustíte tento dotaz, databáza vráti riadky obsahujúce Johna a Jane ako duplikáty.

Odstránenie duplikátov z databázy

Po nájdení duplikátov ich možno budete chcieť odstrániť pomocou príkazu DELETE.

V tomto príklade spustite nasledujúci dotaz:

S cte AS (
VYBRAŤ *
ROW_NUMBER() VIAC (
PARTIE BY
meno, skóre
ZORADIŤ PODĽA
meno, skóre
) R
OD
Používatelia
)

VYMAZAŤOD cte
KDE R > 1;

Tento dotaz používa výraz CTE na nájdenie duplikátov a potom ich odstráni všetky okrem jedného.

Prečo by ste mali odstrániť duplicitné údaje

Odstránenie duplicitných údajov nie je nevyhnutnosťou. Umožňuje vám však uvoľniť miesto, ktoré využívajú duplicitné riadky.

Menej riadkov tiež znamená, že dotazy sa môžu vykonávať oveľa rýchlejšie, čo vedie k vyššiemu výkonu. Použite dotazy v tomto návode, ktoré vám pomôžu nájsť a odstrániť duplikáty z databázy SQL.