kdb / q更新键控表元素的列表元素

时间:2017-07-17 18:42:59

标签: insert-update kdb q-lang

我有一张表:

q)tbl[`XXX]
1977 1987 1997

我想更新年份列表中的第n个元素,因此上面的内容变为

q)tbl[`XXX]
1997 1987 2007

需要它到位吗? 一直在研究文档,但很难搞清楚。

2 个答案:

答案 0 :(得分:3)

您可以将该表视为翻转字典。 要进行字典更新,首先要在键上进行索引:

  q)tbl:([]XXX:1977 1987 1997)
  q)dict:flip tbl
  q)dict[`XXX;n]:2007
  q)dict
  XXX| 1977 1987 2007

因此,要对表执行就地更新,请使用以下语法:

  q)tbl:([]XXX:1977 1987 1997)
  q)tbl[`XXX]
  1977 1987 1997
  q)tbl[n;`XXX]:2007
  q)tbl[`XXX]
  1977 1987 2007

答案 1 :(得分:0)

qsql版的Jamies回答:

q)update XXX:2007 from `tbl where i=n

这也允许您使用基于表

中其他列的where子句