你如何自我加入KDB查询?

时间:2016-04-14 14:15:55

标签: self-join kdb

KDB是否可以执行以下操作:

(在SQL中为您提供等价物)

select column1 
  from table1 alias1
    join table1 alias2
  where alias1.column2 = alias2.column2

2 个答案:

答案 0 :(得分:0)

是的,例如:

q)t:([]k: 1 2 1; v:`A`B`C)
q)ej[`k;t;t]
k v
---
1 A
1 C
2 B
1 A
1 C

更新:您可以根据需要过滤结果:

q)select from ej[`k;t;t] where (v=`A) or k=2
k v
---
1 A
2 B
1 A

更新2 :如果您需要的只是找到重复项,则根本不需要自行加入您的表:

q)t:([]k: 1 2 3 4 5; v:`A`B`A`C`C)
q)select from t where 1<(count;v)fby v
k v
---
1 A
3 A
4 C
5 C

答案 1 :(得分:0)

对于第二个问题(不要让我评论,所以在这里添加),你可能会做类似下面的事情

t:([]k: 1 2 3 4 5; v:`A`B`A`C`C) 

select from t where v in (exec v from (select count i by v from t) where x>1)

ungroup select from (`v xgroup t) where (count each k)>1