Обновлять только совпадающие записи в ключевой таблице KDB + с помощью Q - PullRequest
1 голос
/ 30 сентября 2019

У меня есть таблица с ключами (tableA), и я хочу обновить ее с изменениями из другой таблицы с ключами (tableB), но только с записями, где ключ в tableB совпадает с ключом в tableA. Другими словами, я не хочу никаких новых записей в таблице A, я только хочу обновить те, которые уже есть в этой области. У 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 Ответ

2 голосов
/ 30 сентября 2019

lj это то, что вы хотите здесь:

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