заполнить нулевые значения из другой таблицы такими же размерами - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть две таблицы, например:

Первая таблица:

| A | B    |  
|---|------|  
| 3 | 2    |  
| 1 | NULL |  

Вторая таблица:

| A | B    |  
|---|------|  
| 0 | 9    |  
| 7 | 5    | 

Они имеют одинаковые столбцы с одинаковым порядком, и такое же количество строк. Мне нужно заполнить значения NULL в первой таблице значениями из второй таблицы, соответствующей той же ячейке, чтобы первая таблица стала

| A | B    |  
|---|------|  
| 3 | 2    |  
| 1 | 5    | 

1 Ответ

0 голосов
/ 26 февраля 2020

Если у вас есть столбец, в котором указан порядок в каждой таблице, вы можете использовать join и row_number():

select t1.a, coalesce(t1.b, t2.b) as b
from (select t1.*, row_number() over (order by id) as seqnum
      from t1
     ) t1 left join
     (select t2.*, row_number() over (order by id) as seqnum
      from t2
     ) t2
     on t1.seqnum = t2.seqnum;

Это немного сложно представить как update в Hive , Я бы рекомендовал сохранить результаты как временную таблицу, а затем перезаписать исходную таблицу.

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