首页 > 解决方案 > 使用 kdb 中的 where 子句将表作为条件传递

问题描述

我有一张桌子:

t:([] sym:`GOOG`AMZN; px:10 20; vol:100 200);

是否可以将子表作为 where 子句条件传递给表?
下面的查询抛出类型错误:

select from t where ([] sym:enlist `GOOG; px:enlist 10)

标签: kdb

解决方案


对的,这是可能的:

q)select from t where([]sym;px) in ([] sym:enlist `GOOG; px:enlist 10)
sym  px vol
-----------
GOOG 10 100

更新:但是,如果t很大,这应该更快:

q)([] sym:enlist `GOOG; px:enlist 10)#2!t
sym  px| vol
-------| ---
GOOG 10| 100

推荐阅读