使用Q更新键控KDB +表中仅匹配的记录

时间:2019-09-30 07:18:03

标签: kdb

我有一个键控表(tableA),我想用另一个键控(tableB)表中的更改来更新它,但是仅使用tableB中的键与tableA中的键匹配的记录来更新。换句话说,我不希望tableA中有任何新记录,我只想更新该区域中已有的记录。 tableA将具有一些tableB中不存在的列,我想保留这些列的原始值。例如,如果tableA和tableB看起来像这样:

tableA:([lname:`Dent`Beeblebrox`Prefect; fname:`Arthur`Zaphod`Ford]; iq:98 42 126; age: 23 49 78)

lname      fname | iq  age
-----------------| -------
Dent       Arthur| 98  23
Beeblebrox Zaphod| 42  49
Prefect    Ford  | 126 78

tableB:([lname:`Dent`Dirk; fname:`Arthur`Gently]; iq:105 118) <-- no age column

lname fname | iq 
------------| ---
Dent  Arthur| 105
Dirk  Gently| 118

那么更新的预期结果将是:

lname      fname | iq  age
-----------------| -------
Dent       Arthur| 105 23    <-- iq updated, age left alone
Beeblebrox Zaphod| 42  49
Prefect    Ford  | 126 78

* Dirk Gently NOT added because he didn't exist in tableA

非常感谢有人可以给我一种以这种方式更新表的有效语法。

1 个答案:

答案 0 :(得分:2)

lj是您想要的:

q)tableA lj tableB
lname      fname | iq  age
-----------------| -------
Dent       Arthur| 105 23
Beeblebrox Zaphod| 42  49
Prefect    Ford  | 126 78