我使用 INSERT INTO table VALUES
添加多行,如下所示:
insert into hub values
(md5(md5('test1')) as enc, CURRENT_TIMESTAMP() as ct, 'DATA_SOURCE_1', 'test1'),
(md5(md5('test2')) as enc, CURRENT_TIMESTAMP() as ct, 'DATA_SOURCE_1', 'test2')
;
我收到以下错误:
<块引用>SQL 编译错误:位置 19 处的语法错误第 2 行意外 '作为'。位置 28 处的语法错误第 2 行意外 'CURRENT_TIMESTAMP'。位置 50 处的语法错误第 2 行意外 ''DATA_SOURCE_1''。位置 19 处的语法错误第 3 行意外的“as”。句法 位置 28 处的第 3 行错误“CURRENT_TIMESTAMP”。句法 位置 50 处的错误行 3 意外“DATA_SOURCE_1”。
我尝试从子查询中删除 as
,但出现以下错误:
SQL 编译错误:VALUES 中的表达式无效 [MD5(MD5('test'))] 条款
我知道 md5
应该返回一个值而不是表达式,这就是我使用 AS
但它不起作用的原因。
答案 0 :(得分:2)
这对我来说似乎是一个错误,它有点类似于 this question。您可以以不同的方式编写插入内容,但可以达到相同的结果:
insert into hub
select md5(md5('test1')), CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test1'
union all
select md5(md5('test2')), CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test2'
或者像下面这样,如果 VALUE
部分中有很多行,它可能会更简洁:
insert into hub
select
md5(md5(column1)),
column2,
column3,
column4
from
values
('test1', CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test1'),
('test2', CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test2')