Couchbase中WHERE子句中的条件

时间:2017-04-13 09:41:03

标签: couchbase n1ql couchbase-sync-gateway

我是沙发基地的新手。无法在网上找到我想要实现的目标。

我正在尝试使用特定文档类型的条件。我的情况就是这样 - 如果文件类型是' type1'然后在该文档和文档类型中找到特定的ID' type2'然后只在该文档类型中找到另一个id。我的查询如下 -

SELECT DISTINCT appDetail.id, appDetail.group_id_record
FROM default appDetail
LEFT JOIN default users ON KEYS appDetail.id
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail')

我假设我在JOIN中需要额外的条件可能是?

1 个答案:

答案 0 :(得分:1)

使用CASE conditional operator

SELECT DISTINCT CASE  WHEN appDetail.type = 'user' THEN appDetail.id WHEN appDetail.type = 'app_detail' THEN appDetail.detailId END, appDetail.group_id_record
FROM default appDetail
LEFT JOIN default users ON KEYS appDetail.id
LEFT JOIN default groups ON KEYS ARRAY 'app_detail::' || TO_STRING(c) FOR c 
IN appDetail.group_id_record END
WHERE (appDetail.type = 'user' OR appDetail.type = 'app_detail')

在您的查询中小心使用DISTINCT,因为尽管类型不同(我不认为您想要此结果),但您将相同的ID分组(