Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Andmebaasi kujundamise parimad tavad soovitavad kasutada unikaalset piirangut, et vältida andmebaasis duplikaate. Kui aga töötate halvasti kujundatud andmebaasi või ebapuhta andmetega, peate võib-olla ise otsima duplikaadid ja need käsitsi kustutama.

Lugege edasi, et saada teavet selle kohta, kuidas SQL-andmebaasis duplikaate leida ja kuidas neid kustutada.

Looge näidisandmebaas

Demonstreerimiseks looge selle SQL-päringu käivitamisega tabel nimega Kasutajad koos nime ja punktisumma veeruga.

TULLATABELKUIOLEMASKasutajad;

LOOTABELKasutajad (
pk_id int ESMANE VÕTI,
nimi VARCHAR (16),
skoor INT,
);

Sisestage mõned näidisväärtused, käivitades selle päringu:

LISAINTO
Kasutajad (pk_id, nimi, tulemus)
VÄÄRTUSED
(1, "Jane", 20),
(2, "John", 13),
(3, "Alex", 32),
(4, "John", 46),
(5, "Jane", 20),
(6, "Maarja", 34),
(7, "Jane", 20),
(8, "John", 13)

Pange tähele, et mõned neist ridadest sisaldavad nime veeru korduvaid väärtusi.

instagram viewer

Tutvuge nendega julgelt SQL-i käsud ja päringud kui vajate põhjalikumat selgitust andmebaasidega SQL-i abil manipuleerimise kohta.

GROUP BY kasutamine dubleeritud väärtuste leidmiseks

Sa saad kasutage väärtuste korraldamiseks käsku GROUP BY mis vastavad teatud tingimustele samas rühmas.

Oletame, et näidistabelis olevad nimed peavad olema kordumatud. Saate kasutada GROUP BY, et rühmitada sama nimega ridu.

VALInimi, COUNT(nimi)
Kasutajatelt
GROUP BY nime järgi
ON LOEND(nimi) > 1

COUNT võimaldab valida ridu, millel on rohkem kui üks sama nimega kasutaja.

Selle päringu käivitamisel tagastab andmebaas read, mis sisaldavad Johni ja Jane'i duplikaatidena.

Duplikaatide kustutamine andmebaasist

Pärast duplikaatide leidmist võite soovida need kustutada, kasutades DELETE-lauset.

Selle näite jaoks käivitage järgmine päring:

KOOS cte AS (
VALI *
ROW_NUMBER() LÄBES (
PARTITSIOON
nimi, skoor
TELLI
nimi, skoor
) R
FROM
Kasutajad
)

KUSTUTAFROM cte
KUS R > 1;

See päring kasutab duplikaatide leidmiseks CTE-avaldist ja seejärel kustutab need kõik peale ühe.

Miks peaksite dubleerivad andmed kustutama

Dubleerivate andmete kustutamine ei ole kohustuslik. Siiski võimaldab see vabastada ruumi, mida dubleerivad read kasutavad.

Vähem ridu tähendab ka seda, et päringuid saab täita palju kiiremini, mis suurendab jõudlust. Kasutage selles õpetuses olevaid päringuid, et aidata teil SQL-andmebaasist duplikaate leida ja sealt eemaldada.