3 Stimmen

Wie werden bestimmte ähnliche Zeilen bei der Auswahl ignoriert?

Ich habe die folgende Tabelle

Id  col1 col2 col3
1    c    2     m
2    c    3     6
2    b    d     u
3    e    6     9
4    1    v     8
4    2    b     t
4    4    5     g

Wie Sie sehen können, gibt es doppelte Werte in der Spalte id, 2 und 4. Ich möchte nur Zeilen mit eindeutigem ID-Wert auswählen und die folgenden Zeilen mit doppeltem ID-Wert ignorieren. Ich möchte nur die erste der Zeilen mit doppelten Werten behalten

1    c    2     m
2    c    3     6
3    e    6     9
4    1    v     8

Es gibt eine FK-Beschränkung, so dass ich Zeilen mit doppelten Werten nicht löschen kann.

Ich verwende SQL SERVER 2008 R2

Für jede Antwort wären wir dankbar.

7voto

Andomar Punkte 224164

Sie können verwenden row_number um jede Zeile mit der gleichen Nummer zu versehen id . Dann können Sie nur die erste Zeile pro id :

select  *
from    (
        select  row_number() over (partition by id order by col1, col2, col3) rn
        from    YourTable
        ) as SubQueryAlias
where   rn = 1

Die Unterabfrage ist erforderlich, weil SQL Server keine row_number direkt im where Klausel.

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