Hive 使用select子句创建表

Hive 使用select子句创建表,hive,Hive,我正在尝试使用CTAS样式(创建为选择)创建一个表。 如果在select查询中找不到数据,配置单元将显示错误 我试过这样的东西 from ( select A.a,B.b from A join B on A.v=B.d )tmp create table test as select tmp.a,tmp.b where tmp.a=100 注意:没有与tmp.a=100匹配的数据 那么,有什么办法可以应对这种情况呢! 我的意思是,如果在select子句中找到的数据创建了一个表,否则,它不

我正在尝试使用CTAS样式(创建为选择)创建一个表。 如果在select查询中找不到数据,配置单元将显示错误

我试过这样的东西

from 
(
select A.a,B.b from A join B on A.v=B.d
)tmp

create table test
as
select tmp.a,tmp.b
where tmp.a=100
注意:没有与tmp.a=100匹配的数据

那么,有什么办法可以应对这种情况呢!
我的意思是,如果在select子句中找到的数据创建了一个表,否则,它不应该创建表,也不应该抛出任何错误,或者它应该创建一个空表。最简单的方法实际上是创建表并使用insert from。它对错误也更具弹性,这就是为什么这种形式在任何情况下都更可取的原因(c.f.编程语言中的静态键入)

但是,也可以将select子句与包含一行的表合并,然后删除该行

CREATE TABLE foo AS 
( SELECT id,value from BAR)
(SELECt "-1" as id, -5 as value);

DELETE FROM foo WHERE id=-1;
(不是正确的sql,但这个想法希望是可以理解的)

如果只想创建表,可以执行以下操作

CREATE TABLE foo LIKE bar;
INSERT INTO ...

插入可能再次抛出错误(此处没有运行配置单元).

我可以知道投否决票的原因吗!!!我没有投否决票,但是,你的问题很难理解。我会尝试重写,但我很难理解你想要什么。我正在尝试用示例代码编辑问题,但遗憾的是,我现在做得不太好,谢谢你的示例好主意,但我认为我们无法删除rechive tableSorry的ord有一段时间在考虑标准RDM。在hive中,这只能通过分区来完成。但正如所说:这不是我的首选解决方案。还添加了Create Like,这可能会有所帮助。在我的情况下,没有类似的表,所以不能使用Like