KDB选择位置

KDB选择位置,kdb,Kdb,我有一张桌子 t:flip `dt`id`data ! (`d1`d1`d2`d2`d3`d3; 0 1 0 1 0 1; 100 200 100 300 0 200) s:flip `dt`id ! (`d1`d2`d2`d3; 0 0 1 1) 从另一个查询中,我得到了一个表 t:flip `dt`id`data ! (`d1`d1`d2`d2`d3`d3; 0 1 0 1 0 1; 100 200 100 300 0 200) s:flip `dt`id ! (`d1`d2`d2`d

我有一张桌子

t:flip `dt`id`data ! (`d1`d1`d2`d2`d3`d3; 0 1 0 1 0 1; 100 200 100 300 0 200)
s:flip `dt`id ! (`d1`d2`d2`d3; 0 0 1 1)
从另一个查询中,我得到了一个表

t:flip `dt`id`data ! (`d1`d1`d2`d2`d3`d3; 0 1 0 1 0 1; 100 200 100 300 0 200)
s:flip `dt`id ! (`d1`d2`d2`d3; 0 0 1 1)
如何从t中进行选择,使其返回dt和id组合在s中的所有条目,因此返回

flip `dt`id`data ! (`d1`d2`d2`d3; 0 0 1  1; 100 100 300 200)

您可以在中对表到表操作使用
,因此只需从t中的所需列创建一个表,并使用in在s中搜索相应的记录。只要左参数和右参数中的表列和类型相同,则
中的
将按预期生成布尔列表

q)select from t where ([]dt;id) in s
dt id data
----------
d1 0  100
d2 0  100
d2 1  300
d3 1  200

谢谢,效果很好。只是为了理解这一点。。。这将创建一个dict并检查该dict是否在表中?出于好奇,如果它能做到,为什么我不能这样做。。。“`dt`id!(`d1;0j)in s”这将从列dt和id创建一个表,然后对这两个表应用in操作。关于你的问题-解释器从右到左读取,因此你的语句实际上是在s
中的
(`d1;0j),而不是其他任何东西(因此你会出错)。您可以在s中成功运行
(`dt`id!(`d1;0j))。啊,谢谢。这种从右到左的方式让我经常