SQL Server Elimina le righe duplicate

SQL Server Elimina le righe duplicate

I valori duplicati in un database possono essere un problema quando si eseguono operazioni altamente accurate. Possono portare a un singolo valore che viene elaborato più volte, contaminando il risultato. I record duplicati occupano anche più spazio del necessario, portando a prestazioni lente.

In questa guida, capirai come è possibile trovare e rimuovere le righe duplicate in un database SQL Server.

Le basi

Prima di procedere oltre, ciò che è una riga duplicata? Possiamo classificare una riga come duplicato se contiene un nome e un valore simili a un'altra riga nella tabella.

Per illustrare come trovare e rimuovere le righe duplicate in un database, iniziamo creando dati di esempio come mostrato nelle query seguenti:

Usa duplicatoB;
Crea utenti di tabelle (
Id int Identity (1,1) non null,
Nome utente Varchar (20),
Email Varchar (55),
Telefono Bigint,
stati varchar (20)
);
Inserisci gli utenti (nome utente, e -mail, telefono, stati)
VALORI ('Zero', '[email protected] ', 6819693895,' New York '),
('Gr33n', '[email protected] ', 9247563872,' Colorado '),
('Shell', '[email protected] ', 702465588, "Texas"),
('dimora', '[email protected] ', 1452745985, "New Mexico"),
('Gr33n', '[email protected] ', 9247563872,' Colorado '),
('Zero', '[email protected] ', 6819693895,' New York ');

Nella query di esempio sopra, creiamo una tabella contenente le informazioni dell'utente. Nel blocco della clausola successiva, utilizziamo l'inserto nell'istruzione per aggiungere valori duplicati alla tabella degli utenti.

Trova righe duplicate

Una volta che abbiamo i dati di esempio di cui abbiamo bisogno, consentiamo di verificare i valori duplicati nella tabella degli utenti. Possiamo farlo usando la funzione di conteggio come:

Seleziona nome utente, e -mail, telefono, stati, conta (*) come conte_value dal gruppo di utenti per nome utente, e -mail, telefono, stati con conteggio (*)> 1;

Lo snippet di codice sopra dovrebbe restituire le righe duplicate nel database e quante volte appaiono nella tabella.

Un output di esempio è come mostrato:

Successivamente, rimuoviamo le righe duplicate.

Elimina le righe duplicate

Il prossimo passo è rimuovere le righe duplicate. Possiamo farlo usando la query Elimina come mostrato nell'esempio di snippet di seguito:

Elimina dagli utenti in cui non è in (selezionare Max (ID) dal gruppo Utenti per nome utente, e -mail, telefono, stati);

La query dovrebbe influire sulle righe duplicate e mantenere le righe uniche nella tabella.

Possiamo visualizzare la tabella come:

Seleziona * dagli utenti;

Il valore risultante è come mostrato:

Elimina le righe duplicate (join)

È inoltre possibile utilizzare un'istruzione join per rimuovere le righe duplicate da una tabella. Un codice di query di esempio di esempio è come mostrato di seguito:

Elimina A dagli utenti un join interiore
(Seleziona ID, Rank () su (partizione per nome utente per ID) come Rank_ dagli utenti)
b su a.id = b.id dove b.Rank_> 1;

Tieni presente che l'uso di un join interiore per rimuovere i duplicati può richiedere più tempo di altri su un ampio database.

Elimina la riga duplicata (row_number ())

La funzione row_number () assegna un numero sequenziale alle righe in una tabella. Possiamo usare questa funzionalità per rimuovere i duplicati da una tabella.

Considera la query di esempio di seguito:

Usa duplicatob
Elimina t
DA
(
SELEZIONARE *
, duplicato_rank = row_number () over (
Partizione per id
Ordine tramite (seleziona null)
)
Dagli utenti
) Come t
Dove duplicato_rank> 1

La query sopra dovrebbe utilizzare i valori restituiti dalla funzione row_number () per rimuovere i duplicati. Una riga duplicata produrrà un valore superiore a 1 dalla funzione row_number ().

Conclusione

Mantenere i database puliti rimuovendo le righe duplicate dalle tabelle è buono. Questo aiuta a migliorare le prestazioni e lo spazio di archiviazione. Utilizzando i metodi in questo tutorial, pulirai i tuoi database in sicurezza.