Удалить повторяющиеся строки и сохранить одну строку - PullRequest
5 голосов
/ 23 марта 2012

это имя моей таблицы Result_Simul

Это значение

       Pk   FkIdResult   FkIdSimul
       1        43         1244
       2        43         1244
       3        52         1244
       4        52         1244

Как сохранить только строки Pk = 1 и Pk = 3 и удалить Pk = 2 и Pk = 4

Спасибо за помощь.

Я не очень хорош в Tsql

Фрэнк

Ответы [ 2 ]

12 голосов
/ 23 марта 2012

Вы можете использовать row_number, чтобы присвоить каждому дубликату восходящий номер, а затем удалить 2-й и более высокий дубликаты:

delete  tbl
from    (
        select  row_number() over (partition by FkIdResult, FkIdSimul 
                                  order by Pk desc) as rn
        ,       *
        from    YourTable
        ) tbl
where   rn > 1

Рабочий пример для данных SE.

0 голосов
/ 18 августа 2014

в mysql:

create temporary table table2 as (select min(pk) as pk from Table1 group by FkIdResult   );     
delete from Table1 where pk not in (select pk from table2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...