如何基于另一个表kdb中的列从表中获取列

时间:2020-04-28 20:38:34

标签: kdb

我从表中查询了3列,如下所示:

lst: distinct select  b_market_order_no,instrumentID,mkt from tb  where event=`OvernightOrder

基于这些,我想查询另一个表并从中获取日期列

select dates from tbp where

我不太确定如何在此处应用where子句或join子句,因此lst中的值会从tbp中获取相应的dates列。 tb和tbp表都具有相同的列,它们是从同一模式在不同的日期创建的。

1 个答案:

答案 0 :(得分:3)

如果我正确理解了您的用例,那么您可以在where子句中使用一个表,如下所示:

q)show tab1:([]a:1 2 3;b:4 5 6)
a b
---
1 4
2 5
3 6
q)show tab2:([]date:.z.d+1 2 3;a:2 3 4;b:5 6 7)
date       a b
--------------
2020.04.29 2 5
2020.04.30 3 6
2020.05.01 4 7
q)select date from tab2 where([]a;b)in tab1
date
----------
2020.04.29
2020.04.30

基本上,这会建立一个tab2tab1中相关列的表,并进行比较。

如果要联接的表的模式是可变的,则可能需要另一种方法,例如:

q)select date from tab2 where(cols[tab1]#tab2)in tab1
date
----------
2020.04.29
2020.04.30

或者甚至使用lj并添加一个附加的布尔列以标记tab1中的有效行以从tab2中进行选择:

select date from(tab2 lj cols[tab1]xkey update c:1b from tab1)where c
相关问题