【问题标题】:SQLException: UCAExc:::5.0.0 row column count mismatchSQLException: UCAExc:::5.0.0 行列计数不匹配
【发布时间】:2021-11-07 00:11:06
【问题描述】:

我有一个由 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

有什么建议可以更正我的查询代码?

【问题讨论】:

  • 请不要在回答后更改您的问题。如果您需要其他方面的帮助,请询问另一个问题

标签: java mysql ms-access jdbc ucanaccess


【解决方案1】:

使用这个:

SELECT table1.Name,table1.Ref 
  FROM table1 
 WHERE table1.Name IN (SELECT table2.Name FROM table2)

您的子查询有两个问题。

  1. 返回多列,因此不适合与=IN匹配。
  2. 可能返回不止一行,所以不适合与=匹配。

【讨论】:

  • 但我需要显示SUM(table2.Q) 的结果,我该怎么做??
  • 请再问一个问题。并且,在问题中,请显示一些样本数据和该样本数据的预期结果。
  • 对不起,我认为我的代码 java 中的 pbm 不在查询中,我会尝试修复它
【解决方案2】:

你可以使用:

select a.name,ref,name_sum 
from table1 a  
inner join (
            select name,sum(Q) as name_sum  
            from table2   
            group by name) b  
on a.name=b.name;

table2你可以选择你需要的sum加入table1

演示:https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/3

【讨论】:

  • 但我在 table1 和 table2 中有更多数据(不仅仅是 a,b)......对不起,我认为我的代码 java 中的 pbm 不在查询中,我会尝试修复它。跨度>
  • @waroakawa,首先,您的查询是错误的,因为您有=,即使您在子查询中将其更改为in,也必须只有一列。,您有两个。在您的脚本中尝试我的查询,我认为它会起作用。而对于数据,不管有多少条记录,查询都会起作用
猜你喜欢
  • 2015-12-19
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
相关资源
最近更新 更多