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
相关产品推荐
相关产品推荐

