Как правильно составить запрос к базе данных postgreSQL с такими параметрами
Необходимо составить запрос, который найдёт все строки у которых одновременно повторяются поля name и parentid и в этих случаях нужно проставить в конце каждого поля name цифру, начиная с 1 через пробел(Раздел 1, Раздел 2). Тоесть если у нас 5 строк у которых совпадают name и parentid, то изменить имена начиная с 1, далее к следующим повторам имени и также в конце добавить номер
Должно получиться примерно: "Item 1" - "parent1", "Item 2" - "parent1", "Item 3" - "parent1"; "Product 1" - "parent 55","Product 2" - "parent 55","Product 3" - "parent 55"
Ответы (1 шт):
На мой взгляд в Вашем случае можно использовать оконную функцию ROW_NUMBER() в комбинации с PARTITION BY для определения групп повторяющихся значений:
UPDATE ВАША_БД
SET name = name || ' ' || ROW_NUMBER() OVER (PARTITION BY name, parentid ORDER BY name, parentid);