Как ограничить дублирующиеся строки - PullRequest
0 голосов
/ 29 мая 2019

Мне нужна помощь относительно запроса SQL.Просматривая сайт, я нашел несколько фрагментов кода, которые возвращают повторяющиеся строки.Вот тот, с которым я пошел:

select unumber, name, localid
from table1
where unumber
in (select unumber from table1 group by unumber having count (*) > 1 )
order by unumber

, который отлично работает, однако в таблице у меня есть и другие столбцы, такие как отметка времени и т. Д. Таким образом, когда я запускаю запрос, я действительно получаю дубликатСтроки, однако, я получаю дубликаты несколько раз из-за разных временных отметок, например.Есть ли способ ограничить результаты только «уникальными» дублирующимися строками?

enter image description here

Надеюсь, это имеет смысл!Заранее спасибо!

1 Ответ

2 голосов
/ 29 мая 2019

Для того, что вы описываете, вы можете просто использовать select distinct:

select distinct unumber, name, localid
from table1
where unumber in (select unumber from table1 group by unumber having count (*) > 1 )
order by unumber;

Однако я бы с большей вероятностью написал это, используя оконные функции:

select unumber, name, localid
from (select t1.*,
             count(*) over (partition by unumber) as cnt,
             row_number() over (partition by unumber, name, localid order by unumber) as seqnum
      from table1 t1
     ) t1
where cnt > 1 and seqnum = 1;
...