Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

Cele mai bune practici de proiectare a bazelor de date recomandă utilizarea constrângerii UNIQUE pentru a preveni duplicarea într-o bază de date. Cu toate acestea, atunci când lucrați cu o bază de date prost proiectată sau cu date necurate, poate fi necesar să găsiți singur duplicatele și să le ștergeți manual.

Citiți mai departe pentru a afla cum să găsiți duplicate într-o bază de date SQL și cum să le ștergeți.

Creați o bază de date eșantion

În scopuri demonstrative, creați un tabel numit Users cu o coloană de nume și scor prin rularea acestei interogări SQL.

CĂDERE BRUSCAMASADACĂEXISTĂUtilizatori;

CREAMASAUtilizatori (
pk_id int CHEIA PRINCIPALA,
numele VARCHAR (16),
scor INT,
);

Introduceți câteva valori eșantion rulând această interogare:

INTRODUCEÎN
Utilizatori (pk_id, nume, scor)
VALORI
(1, „Jane”, 20),
(2, 'Ioan'
instagram viewer
, 13),
(3, „Alex”, 32),
(4, 'Ioan', 46),
(5, „Jane”, 20),
(6, "Maria", 34),
(7, „Jane”, 20),
(8, 'Ioan', 13)

Rețineți că unele dintre aceste rânduri conțin valori duplicate pentru coloana de nume.

Simțiți-vă liber să le verificați Comenzi și interogări SQL dacă aveți nevoie de o explicație mai aprofundată despre cum să manipulați bazele de date folosind SQL.

Folosind GROUP BY pentru a găsi valori duplicate

Puteți utilizați instrucțiunea GROUP BY pentru a aranja valori care îndeplinesc anumite condiţii în acelaşi grup.

Să presupunem că numele din tabelul eșantion trebuie să fie unice. Puteți folosi GROUP BY pentru a grupa rândurile care au același nume.

SELECTAȚINume, NUMARA(Nume)
DE LA Utilizatori
GROUP BY nume
AVÂND NUMĂR (nume) > 1

COUNT vă permite să selectați rândurile care au mai mult de un utilizator cu același nume.

Când executați această interogare, baza de date va returna rândurile care conțin John și Jane ca duplicate.

Ștergerea duplicatelor dintr-o bază de date

După ce ați găsit duplicatele, poate doriți să le ștergeți folosind instrucțiunea DELETE.

Pentru acest exemplu, rulați următoarea interogare:

CU cte LA FEL DE (
SELECTAȚI *
ROW_NUMBER() Peste (
PARTIZARE DE
nume, punctaj
COMANDA PENTRU
nume, punctaj
) R
DIN
Utilizatori
)

ȘTERGEDIN cte
UNDE R > 1;

Această interogare folosește o expresie CTE pentru a găsi duplicatele și apoi le șterge pe toate, cu excepția unuia.

De ce ar trebui să ștergeți datele duplicate

Ștergerea datelor duplicate nu este obligatorie. Cu toate acestea, vă permite să eliberați spațiul folosit de rândurile duplicate.

Mai puține rânduri înseamnă, de asemenea, că interogările se pot executa mult mai rapid, ceea ce duce la performanțe mai mari. Utilizați interogările din acest tutorial pentru a vă ajuta să găsiți și să eliminați duplicatele dintr-o bază de date SQL.