为什么我不能在更新语句中加入条件?
Why can't I put a condition in update statement?
我有一个 table:
t:([]val:10?100)
我想添加一个带有 cond 语句的列:如果值低于 55,只需将其设置为 55。但是更新语句不适用于该语句:
update newVal:$[val<55;55;val] from
我必须如何更改它?
谢谢。
由于 val 是向量,因此您必须使用条件向量
update newVal:?[val<55;55;val] from t
顺便说一下,另一种将它减到 55 的方法是使用 max/or (|)
update val|55 from t
我认为@terrylynch 是完美的。但有时当向量条件太难使用时,您也可以在 q-sql 语句中使用 lambda。而使用向量条件的原因仅仅是因为一列是一个列表
q)t
val
---
12
10
1
90
73
90
43
90
84
63
q)update newVal:{$[x<55;55;x]}each val from t
val newVal
----------
12 55
10 55
1 55
90 90
73 73
90 90
43 55
90 90
84 84
63 63
q)update newVal:{x|55}each val from t
val newVal
----------
12 55
10 55
1 55
90 90
73 73
90 90
43 55
90 90
84 84
63 63
我有一个 table:
t:([]val:10?100)
我想添加一个带有 cond 语句的列:如果值低于 55,只需将其设置为 55。但是更新语句不适用于该语句:
update newVal:$[val<55;55;val] from
我必须如何更改它?
谢谢。
由于 val 是向量,因此您必须使用条件向量
update newVal:?[val<55;55;val] from t
顺便说一下,另一种将它减到 55 的方法是使用 max/or (|)
update val|55 from t
我认为@terrylynch 是完美的。但有时当向量条件太难使用时,您也可以在 q-sql 语句中使用 lambda。而使用向量条件的原因仅仅是因为一列是一个列表
q)t
val
---
12
10
1
90
73
90
43
90
84
63
q)update newVal:{$[x<55;55;x]}each val from t
val newVal
----------
12 55
10 55
1 55
90 90
73 73
90 90
43 55
90 90
84 84
63 63
q)update newVal:{x|55}each val from t
val newVal
----------
12 55
10 55
1 55
90 90
73 73
90 90
43 55
90 90
84 84
63 63