t:([] col1:`aa`bb`cc;col2:`aaa`bbb`ccc);
field1:`col1;
field2:`col2;
v1:`aa;
v2:`aaaa;
我想通过功能更新获得相同的结果
update col2:`aaaa from t where col1=`aa;
我试过
![t;enlist (=;field1;enlist v1);0b;(enlist field2)!(enlist v2)];
但它给我一个错误'aaaa
答案 0 :(得分:3)
![t;enlist (=;field1;enlist v1);0b;(enlist field2)!(enlist enlist v2)]
答案 1 :(得分:1)
您可以使用parse函数将更新表达式转换为解析树,您可以从该树中轻松读取功能更新的正确参数。
q)parse"update col2:`aaaa from t where col1=`aa"
!
`t
,,(=;`col1;,`aa)
0b
(,`col2)!,,`aaaa
回想一下,
是enlist
,因此您的查询的功能形式将是
![t;enlist(=;`col1;enlist `aa);0b;(enlist `col2)!enlist enlist `aaaa]
或使用变量名称
![t;enlist(=;field1;enlist v1);0b;(enlist field2)!(enlist enlist v2)]
答案 2 :(得分:0)
它不是功能更新形式,但这是您可以更新表格的另一种方式
@[t; where t[`col1] =`aa; :; enlist[`col1]!enlist[`aaaa]]