首页 > 解决方案 > Couchbase 查询名称别名

问题描述

实际上我正在使用 Couchbase N1Ql Query 从数据库中检索数据,其中有计算

我的查询的示例类似模型如下:

SELECT 2+1 AS Greeting from something where Greeting>1;

我得到的错误是:

Ambiguous reference to field Greeting.

但是,如果我这样修改:

SELECT 2+1 AS Greeting from something where 2+1>1

 

这是可行的,但这不是一个好的解决方案,因为它涉及大量计算。谁能帮我优化这个查询?

标签: sqldatabasecouchbasen1ql

解决方案


正如@DinishDB 提到的投影别名不能在 WHERE 中使用。

SELECT Greeting
FROM something 
LET Greeting = 2+1
WHERE Greeting > 1

LET 变量可以从文档中导出,可以链接。如果让变量在 WHERE 中使用,它将内联并选择索引选择。在 WHERE FILTER 之前评估的变量也是如此。如果未在 WHERE 中使用它评估后过滤器以保存评估。在上述情况下,它是恒定的。所以发生过滤器评估为假,不会获取任何文档。

或者

WITH Greeting AS (2+1)
SELECT Greeting
FROM something 
WHERE Greeting > 1

如果不断使用 WITH 子句一次评估与 LET 每次文档评估。


推荐阅读