我有一个由java代码创建的项目,以及一个有两个表(table1和table2)的数据库。如下所示:
-------table1--------
Name | Ref
__________|__________
A | 100
B | 200
__________|__________
and
-------table2--------
Name | Q
__________|__________
A | 12
B | 10
A | 14
__________|__________
我试着创建一个SQL查询来得到这个结果:
Name | Ref | SUM(Q)
__________|_________|__________
A | 100 | 26
B | 200 | 10
__________|_________|__________
我写了这个查询
query ="SELECT table1.Name,table1.Ref FROM table1 WHERE table1.Name=(SELECT table2.Name,SUM(table2.Q) FROM table2 GROUP BY table2.Name)";
但是我的代码不工作,我得到这个错误:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::5.0.0 row column count mismatch
有什么建议纠正我的查询代码吗?
使用
SELECT table1.Name,table1.Ref
FROM table1
WHERE table1.Name IN (SELECT table2.Name FROM table2)
你的子查询有两个问题。
- 它返回多个列,因此不适合与
=
或IN
匹配。 - 可能会返回多行,因此不适合与
=
匹配。