为什么我不能在更新语句中加入条件?

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