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:())
k1
和 k2
是键控表。 k2
包含 k1
的所有列以及更多。
如何执行从 k1
到 k2
的条件更新插入。基本上,下面的相应工作语句是什么:
`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"
k1:([a:("ff"; "yy"; "zz");z:("tt"; "yy"; "hh")] b:("33"; "44"; "55"); c:("66"; "77"; "88"))
k2:([z:()] a:(); b:(); c:(); m:(); i:())
k1
和 k2
是键控表。 k2
包含 k1
的所有列以及更多。
如何执行从 k1
到 k2
的条件更新插入。基本上,下面的相应工作语句是什么:
`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"