sql - 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
这是可行的,但这不是一个好的解决方案,因为它涉及大量计算。谁能帮我优化这个查询?
解决方案
正如@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 每次文档评估。
推荐阅读
- vue.js - Vue测试组件:无法从小吃栏中选择元素
- javascript - 复制功能有效,如何去除逗号代码?
- kotlin - Kotlin 数学与数学
- stanford-nlp - TrueCaseAnnotator overwriteText 选项
- javascript - Vue 全日历,打开 . 事件点击的模态
- apache-spark - 使用 scala 在 Spark 结构化流中将行转置为列
- excel - 从 txt 文件中提取时间戳
- python - 如何修复“struct.error:解压需要 24 字节的缓冲区”来解压 tcp 数据包?
- mysql - 如何编写带有全名搜索的查询?
- go - 如何在更改字符串方法的类型之前打印类型