我想删除表A中的行,其中列c大于表B的列c的最大值
我试过
delete * from A
where A.p >= (select max(t.c) from B t)
但它不起作用。我怎样才能做到这一点?
答案 0 :(得分:1)
INSERT ... VALUES,UPDATE和DELETE语句在hive-site.xml配置文件中需要以下属性值:
hive.enforce.bucketing true
hive.exec.dynamic.partition.mode nonstrict
在相应的hive-site.xml中更新配置后,重新启动服务 - HiveServer2和Hive Metastore。
然后,使用这个hql
delete from A
where A.p >= (select max(t.c) from B t)
答案 1 :(得分:1)
这里有几个问题:
DELETE语法不应包含星号(“*”)。请参阅官方Hive Delete syntax。
正如MysticForce正确指出的那样,where子句中的子查询仅支持IN,NOT IN,EXISTS,NOT EXISTS语句。请参阅Subqueries syntax in manual。