如何在Cosmos DB的ORDER BY子句中使用查询别名?
Cosmos DB中SELECT别名在ORDER BY中使用的解决方案
在Cosmos DB的SQL语法里,直接在ORDER BY中引用SELECT定义的别名会失效,这是因为查询执行时,ORDER BY的解析优先级早于SELECT的别名绑定逻辑,导致引擎识别不到你定义的别名Abc。下面是两种可行的解决方法:
方法一:重复原表达式到ORDER BY子句中
直接把SELECT里的字段表达式复制到ORDER BY里,引擎就能直接识别要排序的字段:
SELECT c['value'].id AS Abc FROM c ORDER BY c['value'].id
方法二:使用子查询/CTE预先生成别名数据集
通过子查询或者公共表表达式(CTE)先将包含别名的结果集生成临时数据,再对这个临时集进行排序,这样就能正常引用别名了:
子查询写法
SELECT t.Abc FROM ( SELECT c['value'].id AS Abc FROM c ) t ORDER BY t.Abc
CTE写法
WITH temp_data AS ( SELECT c['value'].id AS Abc FROM c ) SELECT temp_data.Abc FROM temp_data ORDER BY temp_data.Abc
内容的提问来源于stack exchange,提问作者Hank Tuff
相关产品推荐
相关产品推荐

