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

Hasura:数据存储为min-max区间字段时如何按用户输入区间筛选

核心匹配逻辑

两个区间存在重叠的充要条件为:数据库存储的鞋款尺码区间左边界 ≤ 用户输入的区间右边界,且数据库存储的鞋款尺码区间右边界 ≥ 用户输入的区间左边界。

正确Hasura查询代码

query MyQuery {
  models(
    where: {
      _and: [
        { shoes_min: { _lte: "42" } },
        { shoes_max: { _gte: "41" } }
      ]
    },
    order_by: {shoes_max: asc}
  ) {
    shoes_min
    shoes_max
    name
    url
  }
}

如果需要动态传入用户输入的区间值,把42和41替换为GraphQL变量即可。

匹配验证(以用户输入区间(41,42)为例)

  • 尺码41.0:shoes_min=41 ≤ 42,shoes_max=41 ≥ 41 → 匹配
  • 尺码41.5-42:shoes_min=41.5 ≤ 42,shoes_max=42 ≥ 41 → 匹配
  • 尺码42-43:shoes_min=42 ≤ 42,shoes_max=43 ≥ 41 → 匹配

原查询错误原因

原查询逻辑限制了要么shoes_min落在用户输入区间内,要么shoes_max落在用户输入区间内,漏掉了数据库区间一端刚好卡在用户区间边界、另一端超出的场景,因此无法匹配42-43这类条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:03