JavaScript中SQL查询结果含括号属性获取及嵌套查询插入问题
解决聚合函数结果列无法获取的问题
我太懂这个坑了!当你用AVG()这类聚合函数时,数据库默认会把AVG(criticScore)作为结果列的名称,直接在代码里引用这个带括号的属性名很容易出问题——要么是语法不支持,要么是大小写/符号匹配的问题,导致你拿不到对应的值。
解决方法其实很简单,给聚合函数的结果加一个别名就搞定了:
1. 修改SELECT语句,给AVG结果加别名
把原来的SQL改成这样:
var sql1 = 'SELECT tropename, AVG(criticScore) AS averageScore FROM tropesWithScore WHERE tropeName =... GROUP BY tropename';
这里的AS averageScore就是给聚合结果起了一个简洁、易引用的列名,之后你在代码里直接获取averageScore属性就能拿到平均值了。
2. 额外提醒:别忘了GROUP BY
另外要注意,当SELECT语句里同时包含普通列(比如tropename)和聚合函数时,大部分数据库要求你对普通列做GROUP BY,不然会抛出语法错误。我在上面的示例里加上了GROUP BY tropename,你可以根据自己的实际需求调整。
3. 如果是嵌套插入的场景
假设你要把这个查询结果插入到另一个表,用别名也能让代码更清晰:
INSERT INTO your_target_table (trope_name_column, avg_score_column) SELECT tropename, AVG(criticScore) AS averageScore FROM tropesWithScore WHERE tropeName =... GROUP BY tropename;
这样不管是查询结果的处理,还是插入操作的可读性,都会提升很多。
内容的提问来源于stack exchange,提问作者Christopher Konopka
相关产品推荐
相关产品推荐

