背景

在Navicat上运行给的参考例子报错:1054-Unknown column '*******' in 'field list

原因

表面原因是:找不到这个字段名

实际原因是:因为在SQL的子查询中,您不能在SELECT列表中直接引用之前定义的别名。我们需要将这些计算放入一个子查询中,然后在外部查询中引用这些值。

后来经过询问是因为给的例子是Click House数据库的语句,Ch数据库支持在一个子查询中直接定义一个别名后使用,但是在ClickHouse数据库中,列没有在聚合函数下或不在GROUP BY子句中。在ClickHouse中,当你使用聚合函数(如SUM)时,所有不在聚合函数中的列必须包含在GROUP BY子句中。

在你的查询中,alreadyResolvejustResolvenoResolveresolveAndPasswjjzzypValue这些列都是从子查询中聚合得到的,因此它们不需要在最外层的GROUP BY子句中再次出现。问题在于,这些列在最外层查询的CASE表达式中被使用,而这个CASE表达式是在外层查询的SELECT列表中的,而不是在聚合函数内部。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐