首页 > 解决方案 > Kdb Q:仅在空行上进行左连接

问题描述

我想在两个表之间t1t2列上执行左连接,id2仅当侧面id2为空时t1
作为一个 qbie,我想知道它是否存在比我下面的更好的解决方案?

t1: ([] id1:`AAA`BBB`CCC`DDD`EEE; id2:```02C``E25)
t2: ([] id1:`AAA`BBB`CCC`DDD`SSS; id2:`02A`02B`C2C`DD0`SPE)

预期结果:

([] id1:`AAA`BBB`CCC`DDD`EEE; id2:`02A`02B`02C`DD0`E25)

id1 id2
-------
AAA 02A
BBB 02B
CCC 02C
DDD DD0
EEE E25

到目前为止,我的解决方案是通过将列更改id2id3from来执行左连接t2,然后应用向量条件函数?

t1:t1 lj 1!select id1, id3:id2 from t2
t1[`id2]: ?[null t1[`id2];t1[`id3];t1[`id2]]
t1:delete id3 from t1

谢谢!

标签: joinkdb

解决方案


另一种使用填充的方法^

q){key[x]#y^x}[1!t1;1!t2]
id1| id2
---| ---
AAA| 02A
BBB| 02B
CCC| 02C
DDD| DD0
EEE| E25

推荐阅读