Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Osvědčené postupy návrhu databáze doporučují používat omezení UNIQUE, aby se zabránilo duplicitám v databázi. Při práci se špatně navrženou databází nebo nečistými daty však možná budete muset sami najít duplikáty a ručně je odstranit.

Čtěte dále a zjistěte, jak najít duplikáty v databázi SQL a jak je odstranit.

Vytvořte ukázkovou databázi

Pro demonstrační účely vytvořte tabulku s názvem Uživatelé se sloupcem se jménem a skóre spuštěním tohoto dotazu SQL.

POKLESSTŮLLIEXISTUJEUživatelé;

VYTVOŘITSTŮLUživatelé (
pk_id int PRIMÁRNÍ KLÍČ,
jméno VARCHAR (16),
skóre INT,
);

Spuštěním tohoto dotazu vložte některé vzorové hodnoty:

VLOŽITDO
Uživatelé (pk_id, jméno, 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šimněte si, že některé z těchto řádků obsahují duplicitní hodnoty pro sloupec názvu.

instagram viewer

Neváhejte a podívejte se na tyto SQL příkazy a dotazy pokud potřebujete podrobnější vysvětlení, jak manipulovat s databázemi pomocí SQL.

Použití GROUP BY k nalezení duplicitních hodnot

Můžeš k uspořádání hodnot použijte příkaz GROUP BY které splňují určité podmínky ve stejné skupině.

Řekněme, že názvy ve vzorové tabulce musí být jedinečné. Pomocí GROUP BY můžete seskupit řádky se stejným názvem.

VYBRATnázev, POČET(název)
OD uživatelů
GROUP BY name
MÍT POČET (jméno) > 1

COUNT umožňuje vybrat řádky, které mají více než jednoho uživatele se stejným jménem.

Když spustíte tento dotaz, databáze vrátí řádky obsahující Jana a Janu jako duplikáty.

Odstranění duplikátů z databáze

Po nalezení duplikátů je možná budete chtít odstranit pomocí příkazu DELETE.

Pro tento příklad spusťte následující dotaz:

S cte TAK JAKO (
VYBRAT *
ŘÁDEK_NUMBER() PŘES (
ROZDĚLENÍ PODLE
jméno, skóre
SEŘADIT PODLE
jméno, skóre
) R
Z
Uživatelé
)

VYMAZATZ cte
KDE R > 1;

Tento dotaz používá výraz CTE k nalezení duplikátů a poté je odstraní všechny kromě jednoho.

Proč byste měli odstranit duplicitní data

Mazání duplicitních dat není nutností. Umožňuje vám však uvolnit místo, které duplicitní řádky využívají.

Méně řádků také znamená, že dotazy se mohou provádět mnohem rychleji, což vede k vyššímu výkonu. Pomocí dotazů v tomto kurzu vám pomohou najít a odstranit duplikáty z databáze SQL.