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

Flutter集成Supabase时多OR过滤查询结果异常求助

解决Flutter Supabase复杂OR查询不返回预期结果的问题

问题核心

你当前三次调用.or()方法的方式,会让Supabase将这三个条件视为AND逻辑(即必须同时满足所有三个.or()的条件),完全不符合目标SQL里的OR组合需求,这就是第一个OR条件对应数据无法返回的根本原因。

正确的查询构建方式

需要将三个OR子条件合并到同一个.or()调用中,每个子条件用括号包裹,子条件内部的AND逻辑用and()组合。

匹配目标SQL的Flutter Supabase查询代码:

final response = await supabase
    .from('gd_task')
    .select('instanceId, scheduled->>absolute, taskOpen')
    .or(
      '(scheduled->>absolute.gte.2023-07-19T00:00:00.000,and(scheduled->>absolute.lte.2023-07-25T23:59:59.000)),'
      '(scheduled->>absolute.lt.2023-07-19T00:00:00.000,and(taskOpen.eq.true)),'
      '(scheduled->>absolute.lt.2023-07-19T00:00:00.000,and(taskOpen.eq.false),and(actualFinish.eq.2023-07-19T00:00:00.000))',
    );

关键说明

  • 单个.or()参数内的多个子条件用逗号分隔,表示OR关系;
  • 每个子条件内部的多个AND判断,用and(...)包裹;
  • 保持JSON字段提取语法->>的正确性,与目标SQL完全对齐;
  • 可先在Supabase控制台的SQL编辑器中运行目标SQL,确认存在符合第一个条件的数据,再验证客户端查询的返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:21:31