我有一个场景。。。
我有一个名为sample的表,有三列:
id, name, address
其中id是唯一的自动递增列。这是我的数据:
id名称地址1 john LA2彼得。与
我的下一个专栏是3, 'smith', 'vegas'
我试过这样做:
insert into sample select c1 as id from (select max(id)+1 from sample) c1, 'smith' as name , 'vegas' as address;
获取Error: Error compiling statement: FAILED: SemanticException Error in parsing (sttae=402000,code=40000)
我已经为自动递增列尝试过udf,但没有成功。
Hive(唉(不支持自动增量。您可以将其实现为:
insert into sample (id, name, address)
select coalesce(max(id) + 1, 1), 'smith' as name , 'vegas' as address
from sample c1;
也就是说,我强烈建议你不要这样做。同时运行的两个insert
将(可能(看到相同的最大值,并为id插入相同的值。为了避免这种情况,您需要为每次插入锁定整个表。这是相当昂贵的。
请改用UUID和插入日期。
这可能是语法问题。因为我没有一个蜂窝实例可以尝试,
这行得通吗?
insert
into sample
select max(id)+1 c1
,max('smith') as name
,max('vegas') as address
from sample