Как найти повторяющиеся значения, а затем обновить поле в одной таблице с помощью sql? - PullRequest
0 голосов
/ 24 марта 2019

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

Название таблицы: Tp

Колонки: TpId | PId | TId

Как обновить столбец TId до значения 3 для каждой строки, в которой дублируется PId.

Ответы [ 3 ]

1 голос
/ 24 марта 2019

вы можете использовать row_number()

with cte as
(
select *,row_number()over(partition by PId order by TpId ) rn
from Tp
) update cte
  set  TId=3
  where rn=1
1 голос
/ 24 марта 2019

Если вам нужно обновить все строки, в которых дублируется Pid, ​​вы можете использовать что-то вроде этого:

update Tp set Tid=3 where Pid in
(
  select Pid
  from Tp
  group by Pid
  having COUNT(*) > 1
)
1 голос
/ 24 марта 2019

С EXISTS:

update  t
set tid = 3
from tp t
where exists (
  select 1 from tp
  where tpid <> t.tpid and pid = t.pid
)

Полагаю, что tpid уникально в вашей таблице.Смотрите демо .Если вы хотите обновить только все дублированные строки, кроме первой, то:

update t
set tid = 3
from tp t
where exists (
  select 1 from tp
  where tpid < t.tpid and pid = t.pid
)

См. demo .

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