postgresql обновляет столбец с NULL из того же столбца с данными - PullRequest
0 голосов
/ 22 октября 2018

Имя таблицы: myTable, где мне нужно обновить значения A с помощью Null из того же столбца

Group      Value
A            10
A            NULL
A            NULL
A            10
B            20
B            20
B            20
C            30  

Ожидается:

Group      Value
A            10
A            10
A            10
A            10
B            20
B            20
B            20
C            30

МОЙ запрос:

Update myTable
Set myTable.Age = b.Age
FROM myTable b
WHERE A.Age is Null

Я получаю relation doesn't exist.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Попробуйте этот запрос

UPDATE myTable SET Age = 
    (SELECT b.Age 
     FROM myTable b 
     WHERE b.Group = myTable.Group AND  b.Age IS NOT NULL
     LIMIT 1) 
WHERE Age IS NULL 
0 голосов
/ 22 октября 2018

Я думаю, что можно использовать коррелированный подзапрос:

update myTable t
    set Age = (select t2.Age from mytable t2 where t2.name = t.name and t2.Age is not null)
    where t.Age is Null;

Примечание. Это приведет к ошибке, если age находится в более чем одной строке исходных данных для данного * 1005.*.

Если производительность является проблемой, вам нужен индекс для mytable(name, age).

Здесь - это пример db <> fiddle.

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