571 Stimmen

Wie lösche ich doppelte Zeilen in SQL Server?

Wie kann ich doppelte Zeilen löschen, wenn keine einzigartige Zeilen-ID vorhanden ist?

Meine Tabelle ist

col1  col2 col3 col4 col5 col6 col7
john  1    1    1    1    1    1 
john  1    1    1    1    1    1
sally 2    2    2    2    2    2
sally 2    2    2    2    2    2

Nach dem Entfernen der Duplikate möchte ich folgendes übrig haben:

john  1    1    1    1    1    1
sally 2    2    2    2    2    2

Ich habe schon einige Abfragen ausprobiert, aber ich glaube, sie hängen davon ab, eine Zeilen-ID zu haben, da ich nicht das gewünschte Ergebnis erhalte. Zum Beispiel:

DELETE
FROM table
WHERE col1 IN (
    SELECT id
    FROM table
    GROUP BY id
    HAVING (COUNT(col1) > 1)
)

0voto

Nieb_Hasan_077 Punkte 61
LÖSCHEN p1 VON Person p1,
    Person p2
WO
    p1.Email = p2.Email UND p1.Id > p2.Id

0voto

Eine weitere Möglichkeit, doppelte Zeilen ohne Informationsverlust in einem Schritt zu entfernen, sieht wie folgt aus:

delete from dublicated_table t1 (nolock)
join (
    select t2.dublicated_field
    , min(len(t2.field_kept)) as min_field_kept
    from dublicated_table t2 (nolock)
    group by t2.dublicated_field having COUNT(*)>1
) t3 
on t1.dublicated_field=t3.dublicated_field 
    and len(t1.field_kept)=t3.min_field_kept

0voto

prashanth Punkte 3625

Zum Entfernen von Duplikaten vom Azure SQL Server

LÖSCHEN T
VON
(
SELECT *
, DupRank = ROW_NUMBER() OVER (
              PARTITION BY key_value
              ORDER BY (SELECT NULL)
            )
FROM original_table
) AS T
WO DupRank > 1 

https://learn.microsoft.com/de-de/troubleshoot/sql/database-engine/development/remove-duplicate-rows-sql-server-tab#method-2

0voto

Arpan Saini Punkte 3235

Die neu ersetzte Tabelle wird nur den eindeutigen Datensatz haben,

Fall: Wenn Sie keinen Fremdschlüssel haben und die Daten als alle Spalten dupliziert waren

create or replace table table_x  as select distinct * from table_x;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X