UCAExc:::5.0.0行列数不匹配错误,如何修正两表关联分组求和的SQL语句
报错原因
- 你写的子查询
SELECT table2.Name,SUM(table2.Q) FROM table2 GROUP BY table2.Name返回的结果包含2个字段+多行数据,而WHERE table1.Name = (子查询)要求子查询只能返回1个字段且最多1行数据,字段数量不匹配就触发了row column count mismatch错误;同时子查询返回多行结果,用=做匹配逻辑也不成立。 - 原查询的字段列表未包含
SUM(Q)计算项,即使语法修复也无法输出你需要的第三列结果。
修正方案
采用关联聚合子查询的写法即可得到预期结果,Java中拼接的查询代码如下:
query = "SELECT t1.Name, t1.Ref, t2.sum_q FROM table1 t1 " + "INNER JOIN (SELECT Name, SUM(Q) AS sum_q FROM table2 GROUP BY Name) t2 " + "ON t1.Name = t2.Name";
逻辑说明
- 内层子查询先对table2按
Name分组,计算每个Name对应的Q字段总和,别名为sum_q - 用
INNER JOIN将table1和聚合后的子查询结果通过Name字段关联,直接取出需要的三列即可。
内容的提问来源于stack exchange,提问作者waroa kawa
相关产品推荐
相关产品推荐

