2017-07-25 67 views
0
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

欣赏如果有人能帮助。

回答

3
![t;enlist (=;field1;enlist v1);0b;(enlist field2)!(enlist enlist v2)] 
+0

如果您想要涵盖所有功能表单:http://www.timestored.com/kdb-guides/functional-queries-dynamic-sql#functional-update –

+0

非常感谢!它运作良好 – ywu

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)] 
0

这不是在功能更新的形式,但这里有另一种方式可以更新您的餐桌

@[t; where t[`col1] =`aa; :; enlist[`col1]!enlist[`aaaa]]