postgre: перенести значение поля в другое поле для дубликатов
Есть таблица с полями: num, name, num2. Есть дубли с разными num, но одинаковыми name. Нужно записям, у которых num больше 10 в поле num2 прописать num их дублей.
create table table3 (num integer, name varchar(100), num2 integer);
insert into table3 (num, name) values ('1', 'арбуз');
insert into table3 (num, name) values ('4', 'мандарин');
insert into table3 (num, name) values ('5', 'киви');
insert into table3 (num, name) values ('10', 'банан');
insert into table3 (num, name) values ('14', 'мандарин');
insert into table3 (num, name) values ('28', 'арбуз');
select * from table3;
Таблица до
num name num2
1 арбуз
4 мандарин
5 киви
10 банан
14 мандарин
28 арбуз
Таблица после
num name num2
1 арбуз
4 мандарин
5 киви
10 банан
14 мандарин4
28 арбуз 1
Ответы (1 шт):
Автор решения: PUnic
→ Ссылка
В приложении к моей задаче вопрос решен. Может, кому понадобится.
WITH ttt AS (
SELECT name,
min(num) as num
FROM table3 GROUP BY name HAVING COUNT(name)>1
)
UPDATE table3
SET num2 = (SELECT num FROM ttt WHERE ttt.name=table3.name )
WHERE table3.num > 10