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"
2
pom
23 Окт 2018 в 17:44
2 ответа
Лучший ответ
Я думаю, что это решит вашу проблему:
k2 uj `z xkey select from k1 where a like "ff"
Xkey будет поддерживать ключ на k2, в то время как uj будет поддерживать все столбцы, включая те, которые не имеют значений в k1.
В этом примере это вернет:
z | a b c m i
----| ------------------
"tt"| "ff" "33" "66"
7
Joe Griffiths
23 Окт 2018 в 15:03
Ваша попытка утверждения на самом деле очень близка. Ты можешь использовать:
`k2 upsert 0!select from k1 where a like "ff"
2
emc211
23 Окт 2018 в 15:07
Похожие вопросы
Новые вопросы
kdb
kdb + - это собственная высокопроизводительная база данных, разработанная Kx Systems.