Join KDB选择一个表中第二个表中具有匹配键的行

Join KDB选择一个表中第二个表中具有匹配键的行,join,key,kdb,Join,Key,Kdb,愚蠢的kdb问题。我想根据t2中哪些键与t1中的列匹配来选择t1中的行。在下面的示例中,t1中唯一出现在t2中的datesym组合是d1s3和d3s4。因此,生成的表t3应该只有这两行 t1:([]date:`d1`d2`d3`d3;sym:`s1`s2`s3`s4;price:100 200 300 400) date sym price d1 s1 100 d2 s2 200 d3 s3 300 d3 s4 400 t2:2!([]date:`d1`d3`d3`d4

愚蠢的kdb问题。我想根据t2中哪些键与t1中的列匹配来选择t1中的行。在下面的示例中,t1中唯一出现在t2中的
date
sym组合是
d1
s3和
d3
s4。因此,生成的表t3应该只有这两行

t1:([]date:`d1`d2`d3`d3;sym:`s1`s2`s3`s4;price:100 200 300 400)
date    sym price
d1  s1  100
d2  s2  200
d3  s3  300
d3  s4  400


t2:2!([]date:`d1`d3`d3`d4;sym:`s1`s2`s4`s9;var1:`Blah`Blah`Blah`Blah;var2:`Blah`Blah`Blah`Blah)
    date sym | var1 var2
    d1  s1  Blah    Blah
    d3  s2  Blah    Blah
    d3  s4  Blah    Blah
    d4  s9  Blah    Blah


t3:([]date:`d1`d3;sym:`s1`s4;price:100 400)
date    sym price
d1  s1  100
d3  s4  400
一个愚蠢的做法是

delete var1,var2,... from t1 ij t2
是否有一种更干净的方法不需要手动删除t2的所有非键列?

一个选项是

q)select from t1 where ([] date;sym) in key t2
date sym price
--------------
d1   s1  100
d3   s4  400

另一种方法是,如果t2被许多列键入,而您不想将它们键入

t1 where (keys[t2]#t1) in key t2