我想从一个表其列c是比列的最大值更大Ç表B中删除表无法正常工作
的删除行我试过
delete * from A
where A.p >= (select max(t.c) from B t)
,但它无法正常工作。我怎样才能做到这一点?
我想从一个表其列c是比列的最大值更大Ç表B中删除表无法正常工作
的删除行我试过
delete * from A
where A.p >= (select max(t.c) from B t)
,但它无法正常工作。我怎样才能做到这一点?
的INSERT ... VALUES,UPDATE和DELETE语句需要蜂房的site.xml配置文件中的下列属性值:
hive.enforce.bucketing true
hive.exec.dynamic.partition.mode nonstrict
在相应的蜂房site.xml的更新配置后,重新启动服务 - HiveServer2和Hive Metastore。
然后,用这个的HQL
delete from A
where A.p >= (select max(t.c) from B t)
有几个问题在这里:
DELETE语法不应包含星号(“*”)。请参阅官方Hive Delete syntax。
同样如MysticForce正确指出的那样,where子句中的子查询只支持IN,NOT IN,EXISTS,NOT EXISTS语句。请参阅Subqueries syntax in manual。
子查询是否可以在Hive中的where子句中工作而不具有关联性? – MysticForce
@MysticForce - 使用的子查询不是“相关的子查询”。根据定义,相关子查询是使用来自外部查询的值的子查询(嵌套在另一个查询中的查询)。在此示例中,子查询不使用外部查询中的任何值。它所做的就是独立计算MAX值。 – janeshs
where子句中的子查询只支持IN,NOT IN,exists,not exists语句。请参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries – MysticForce
你在说什么版本的蜂巢? – MysticForce
从Hive版本0.14.0开始:INSERT ... VALUES,UPDATE和DELETE现在可用于完整的ACID支持。 –