SQL ОБНОВЛЕНИЕ - PullRequest
       19

SQL ОБНОВЛЕНИЕ

2 голосов
/ 17 апреля 2019

У меня есть этот запрос, который возвращает мне идентификаторы

select id, default_code from product_product ou
where (select count(*) from product_product inr
where inr.default_code = ou.default_code) > 1 and ou.active = false

, но я получаю синтаксическую ошибку с этим оператором

update product_product ou
where (select count(*) from product_product inr
where inr.default_code = ou.default_code) > 1 and ou.active = false set uo.default_code = uo.default_code || 'A';

ERROR:  syntax error at or near "where"
LINE 2:     where (select count(*) from product_product inr

как мне правильно обновить идентификаторы, которые я получаю сначалазаявление

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Правильно:

update
    product_product ou
set
    default_code = ou.default_code || 'A'
from
    (
        select default_code
        from product_product
        group by default_code
        having count(*) > 1
    ) inr
where
    not ou.active
    and ou.default_code = inr.default_code
2 голосов
/ 17 апреля 2019

Вы можете попробовать ниже - используя JOIN

update product_product ou
set default_code = concat(ou.default_code, 'A')
from 
 (
   select inr.default_code,count(*) from product_product inr
    group by inr.default_code having count(*)>1
 )A
where A.default_code = ou.default_code and ou.active = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...