You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询kdb+表以排除symbol列表中包含`1的记录?

咱们先拆解下你现有查询的问题,再给出正确的写法。

首先看你的表结构:

tab:([]a:((``1`2);`a;`b);c:1 2 3)

你的a列混合了symbol列表和单个symbol,这也是你最初的查询没达到预期的原因。

现有查询的问题:

  • 第一个查询:select from tab where a = 1 这个语句是判断a列的整个值是否完全等于1。但你的第一行a是列表``12,另外两行是单个symbola和b,没有任何一行满足a = 1,所以返回空表,这显然不是你想要的结果。

  • 第二个查询:select from tab where 1 in raze a 这个语句其实能筛选出a包含1的记录(也就是第一行),但你的目标是**过滤掉**这类记录(移除所有a里有1的行),逻辑刚好反了。另外,对你的当前数据来说raze是多余的——因为你的a值要么是单个symbol要么是一维列表,raze`不会改变它们的结构。

符合你目标的正确查询:

要过滤掉(排除)所有a列包含1的记录,只需要用not反转判断条件即可:

select from tab where not `1 in a

在你的表上执行这个语句,会得到a不包含1的两行:

a  c
-----
`a 2
`b 3

如果以后你的a列出现更深的嵌套列表(比如列表里套列表),可以用raze先扁平化再判断:

select from tab where not `1 in raze a

但针对你现在的表结构,用简单版的查询就足够了。

内容的提问来源于stack exchange,提问作者Terry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:07:33