表foo
中有一个名为bar
的字段(实际上,它是一个Hive表,但也许没关系)。我需要删除所有未按字段foo
复制的行。即我应该删除所有可能的<val>
的所有行,以使以下查询返回1,
SELECT COUNT(*) FROM bar WHERE foo=<val>;
如何编写查询以删除描述的行?
答案 0 :(得分:1)
大多数SQL方言都允许这样的模式:
DELETE
b
FROM
bar b
INNER JOIN (SELECT foo FROM bar GROUP BY foo HAVING COUNT(*) = 1) x ON x.foo = b.foo;
我不确定这是否适用于Hive,但这可能会让您入门吗?