【问题标题】:In Google DataStore GQL, how can I group the WHERE terms?在 Google DataStore GQL 中,如何对 WHERE 术语进行分组?
【发布时间】:2018-09-26 07:11:09
【问题描述】:

我需要在 WHERE 子句中对术语进行分组。例如,

WHERE (param1='foo1' OR param1='foo2') AND (param2='bar1' OR param2='bar2')

但它给了我一个语法错误,说括号是“意外的”。实际错误是:

GQL query error: Encountered "(" at line 1, column 29. Was expecting one of: "false", "null", "true", <INTEGER>, <DOUBLE>, <SINGLE_QUOTE_STRING>, <DOUBLE_QUOTE_STRING>, <UNQUOTED_NAME>, <QUOTED_NAME>, <NAME_BINDING_SITE>, <POSITION_BINDING_SITE>

那么,我有什么方法可以运行该查询吗?

【问题讨论】:

    标签: google-cloud-datastore gql


    【解决方案1】:

    我相信您面临的问题来自 OR 运算符 - GQL 没有,因此括号中的条件在语法上不正确。

    来自Clauses 表中的WHERE 行(重点是我的):

    将结果集限制为满足一个或多个的实体 状况。每个条件都将实体的属性与 使用比较运算符的值。如果多个条件组合 使用 AND 关键字,则实体必须满足所有 查询返回的条件。 GQL 没有 OR 运算符

    【讨论】:

    • 哇,我没有意识到这一点。错误肯定来自括号中的内容——这就是他们的错误信息实际上所说的。但是由于他们不允许 OR,所以实际上没有任何理由首先要有括号
    • 但是有没有办法“模拟” OR 运算符?如果我需要查找与两个(或多个值)之一匹配的任何记录,我该怎么办?
    • 您必须进行单独的查询并合并结果。
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2014-07-19
    • 2021-01-01
    相关资源
    最近更新 更多