KDB:我如何 insert/upsert 行从一个 table 到另一个

KDB: how do I insert/upsert rows from one table to another

k1:([a:("ff"; "yy"; "zz");z:("tt"; "yy"; "hh")] b:("33"; "44"; "55"); c:("66"; "77"; "88"))


k2:([z:()] a:(); b:(); c:(); m:(); i:())

k1k2 是键控表。 k2 包含 k1 的所有列以及更多。

如何执行从 k1k2 的条件更新插入。基本上,下面的相应工作语句是什么:

`k2 upsert select k1 where a="ff"

我认为这会解决您的问题:

k2 uj `z xkey select from k1 where a like "ff"

xkey 将维护 k2 上的键,而 uj 将维护所有列,包括那些在 k1 中没有值的列。

在此示例中,这将 return:

z   | a    b    c    m i
----| ------------------
"tt"| "ff" "33" "66"

您尝试的陈述实际上非常接近。您可以使用:

`k2 upsert 0!select from k1 where a like "ff"