使用连接条件在配置单元中删除的解决方法

时间:2018-03-09 11:02:16

标签: hadoop hive hiveql

所以我正在尝试将SQL删除查询转换为Hive。我正在使用hive .12版本,它不支持删除。

以下是SQL查询:

Delete from t1  c where exists(select 1 from t2 a where 
a.emplid=c.employee_id and a.project_status='test')

现在我尝试使用NOT IN进行上述查询,但由于某些原因,我们无法在查询中使用NOT IN。

下面是我写的Hive查询,但我不确定它没有给出正确的结果。我对蜂巢很新。任何人都可以帮忙解决这个问题。

INSERT Overwrite table t1
select * from t1 c left outer join t2 a on (c.employee_id=a.employee_id)
where a.project_status= 'test'
and a.employee_id is null

1 个答案:

答案 0 :(得分:2)

project_status='test'条件移至子查询或on子句。另外,您应该只从表c中选择列。

子查询中带过滤器的示例:

insert overwrite table t1
select c.* 
  from t1 c 
       left join (select employee_id 
                    from t2 
                   where project_status='test'
                 ) a on (c.employee_id=a.employee_id)
where a.employee_id is null;

ON中附加条件的示例:

insert overwrite table t1
select c.* 
  from t1 c 
       left join t2 a on (c.employee_id=a.employee_id and a.project_status='test')
where a.employee_id is null;