Как игнорировать некоторые похожие строки при выборе - PullRequest
3 голосов
/ 02 августа 2011

У меня есть следующая таблица

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

Как видите, в столбцах id 2 и 4 есть повторяющиеся значения. Я хочу выбирать только строки с уникальным значением id и игнорировать следующие строки с дублирующимся значением id. Я просто хочу сохранить первую строку с повторяющимися значениями

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

Существует ограничение FK, поэтому я не могу удалить строки с повторяющимися значениями.

Я использую SQL SERVER 2008 R2

Любой ответ будет оценен.

1 Ответ

7 голосов
/ 02 августа 2011

Вы можете использовать row_number для нумерации каждой строки одинаковыми id. Тогда вы можете выбрать только первый ряд для id:

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

Подзапрос необходим, поскольку SQL Server не разрешает row_number непосредственно в предложении where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...