【问题标题】:Alternative way to write IN clause in GQL在 GQL 中编写 IN 子句的替代方法
【发布时间】:2017-12-14 01:39:00
【问题描述】:

如何在 GQL 中编写以下查询

select * from test WHERE lid=1234 AND status IN (1,7,8) order by sent_datetime DESC

执行上述查询时出现异常:GQL query error: Encountered "IN" at line 1, column 46. Was expecting one of: "contains", "has", "is", "=", "<", "<=", ">", ">=", ".", "("

所有的列都被索引了。

谢谢

【问题讨论】:

    标签: google-cloud-datastore google-cloud-platform gql


    【解决方案1】:

    IN 是某些客户端库的功能,严格来说不是服务器 GQL 语言的一部分。您可以通过对IN 子句中的每个值和去重结果发出查询来执行与客户端库相同的操作来模拟此功能。

    所以这个:

    select * from test WHERE lid=1234 AND status IN (1,7,8) order by sent_datetime DESC
    

    会变成这些:

    select * from test WHERE lid=1234 AND status = 1 order by sent_datetime DESC
    select * from test WHERE lid=1234 AND status = 7 order by sent_datetime DESC
    select * from test WHERE lid=1234 AND status = 8 order by sent_datetime DESC
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      相关资源
      最近更新 更多