SQL / HQL Запись в таблицу, если условие верно - PullRequest
1 голос
/ 16 июня 2020

Есть ли способ сделать что-то вроде

IF (numRows A > numRows B)
THEN write A into C

, где A, B, C - это таблицы с одинаковой схемой?

Я использую HiveQL.

1 Ответ

0 голосов
/ 17 июня 2020

Лучше рассчитывать подсчеты отдельно и условно запускать скрипт перезаписи вставки в зависимости от подсчетов. Если вам нужен тот же logi c в одном запросе SQL, это также можно сделать, хотя и не так эффективно:

INSERT OVERWRITE TABLE C
SELECT a.col1, a.col2... --list columns here instead of a.*
  FROM (select a.*, 
               count(*) over() as numRowsA, --counr rows in A
               b.numRowsB 
         from A 
              cross join (select count(*) numRowsB from B) b --count rows in B
       ) a
 WHERE a.numRowsA>a.numRowsB;

Если (a.numRowsA>a.numRowsB) <> TRUE, то select не вернет строк и таблицы C не будет перезаписан.

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