SQL запрос на обновление столбца (нескольких строк) в таблице из другой таблицы - PullRequest
0 голосов
/ 25 мая 2020

Предположим, что в таблице есть столбец со значениями NULL с n строками. Теперь я хочу обновить этот столбец значениями из другого столбца таблицы с таким же количеством строк (n). Как?

Изменить: Мои таблицы: A и B, A имеет call_id, оператор с 10 строками. call_id - это первичный ключ. Теперь у B есть call_id, calllog_id и duration в качестве столбцов, где call_id - FK, а calllog_id - PK. В B call_id имеет значение null в каждой строке (те же 10 строк). Теперь я хочу скопировать значения 10 строк A.call_id в B.call_id

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Если я правильно понял, вы можете использовать join с сгенерированным порядковым номером:

with toupdate as (
      select t.*, row_number() over (partition by col order by col) as seqnum
      from table1 t1
      where t1.col is null
     )
update toupdate
    set col = o.othercol
    from toupdate join
         (select o.*, row_numer() over (order by (select null)) as seqnum
          from othertable o
         ) o
         on o.seqnum = toupdate.seqnum;
0 голосов
/ 25 мая 2020

Учитывая, что в обеих таблицах есть столбец id, к которому вы можете присоединиться, и вы хотите обновить только строки со значениями NULL в col_a таблицы_a

UPDATE A
SET A.col_a = B.col_b
FROM table_a A
JOIN table_b B ON A.id = B.id
WHERE A.col_a IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...