1

在 SQL 中,我可以用逻辑(真和真)或(真和真)编写查询,即:

select * from t1 inner join t2 on ... where (t1.a != t2.a and t1.b != t2.b) or (t1. != t2.a and t1.b != t2.b)

当我尝试像这样在 Q 中这样做时

select from ej[....] where (t1.a != t2.a and t1.b != t2.b) or (t1. != t2.a and t1.b != t2.b)

它无法编译。

我也试过这个

(t1.a != t2.a and t1.b != t2.b) or (t1. != t2.a and t1.b != t2.b)

但它也没有返回正确的结果

如何在 KDB 中查询它?

4

1 回答 1

1

试试这个(在伪代码中):

( (t1.a != t2.a) and (t1.b != t2.b) ) or ( (t1.a != t2.a) and (t1.b != t2.b) )

Kdb/Q从左到右读取,因此它处理

t1.a != t2.a and t1.b != t2.b

作为

t1.a != (t2.a and t1.b != t2.b)

而不是

(t1.a != t2.a) and (t1.b != t2.b)

除非您明确使用括号

于 2014-11-12T13:32:38.720 回答