如果一个表中不存在值,则在另一个表中插入该值

wbrvyc0a  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(294)

我有两张table, Table1 以及 Table2 . 假设表1只有一列 Id . Table2 除此之外还有多个其他列 Id 我需要编写一个配置单元查询来首先检查 Id 的id列中存在 Table1 不管怎样。如果id不存在,我需要将其插入 Table2 否则插入 null .
如:
表1

----Id1------
"abcde"
"ghdis"
----------

现在我想给我一个值“sjsnx”。查询应运行到 Table1 并插入 "sjsnx"Table2 . 如果给我 "de" 作为值,查询应在中插入null Table2 .

5kgi1eie

5kgi1eie1#

如果我理解正确,你可以用 not exists 去获取里面的身份证 table1 但不是 table2 :

insert into table2 (id, . . . )
    select t1.id, . . . 
    from table1 t1
    where not exists (select 1 from table2 t2 where t2.id = t1.id);

这个 . . . 用于其他列及其值。

omhiaaxx

omhiaaxx2#

您需要用一些编程语言(可能是shell、python等)编写代码。这不能使用配置单元一次性完成,因为您的需求需要执行两个数据库插入。同样对于您的输入需求,您可以使用设置值来利用配置单元配置参数来搜索id。
在shell中,您的代码将如下所示:
检查第一个表:

search_id='<your search id>'

 table1search_var=`hive -S -e "select id from table1 where id=${hiveconfig:db_search_id}" --hiveconfig:db_search_id=$search_id`;

 if [ -z "$table1search_var" ];
 then
   echo "Found Null row. Hence inserting search id into table2"
   hive -S -e "insert into table2(id) values('$search_id')"

 else
   echo "Found Not Null rows. Hence inserting NULL into table2"
   hive -S -e "insert into table2(id) values(null)"

 fi

希望这有帮助:)

相关问题