Java 在JUNIT中执行GROUPBY DB查询
我有一个类似于下面的数据库查询,当我在mySql中执行此查询时,它工作正常,但在Junit中失败,错误为“表达式不在聚合或按列分组:”。我的JUnit使用内存中的HSQL DB。我已经阅读了,并且理解当在查询中使用聚合方法时,我们需要为所有字段指定group by 但是我有一个要求,我需要根据只包含一列(不是主键)的分组来获取所有值,请您建议我如何在JUnit中实现这一点 我正在执行的查询:Java 在JUNIT中执行GROUPBY DB查询,java,mysql,unit-testing,junit,hsqldb,Java,Mysql,Unit Testing,Junit,Hsqldb,我有一个类似于下面的数据库查询,当我在mySql中执行此查询时,它工作正常,但在Junit中失败,错误为“表达式不在聚合或按列分组:”。我的JUnit使用内存中的HSQL DB。我已经阅读了,并且理解当在查询中使用聚合方法时,我们需要为所有字段指定group by 但是我有一个要求,我需要根据只包含一列(不是主键)的分组来获取所有值,请您建议我如何在JUnit中实现这一点 我正在执行的查询: 从TestTable中选择*,计数(sampleField),其中sampleField2!=null
从TestTable中选择*,计数(sampleField),其中sampleField2!=null group by SAMPLEFILD
您可以对其他列使用min(列名称)或max(列名称)
例如,如果有名为firstname
和lastname
Select min(firstname), min(lastname), count(sampleField) from TestTable where sampleField2 is not null group by sampleField
已编辑:使用
不是空的
而不是!=空
以获得正确的结果。请小心。。。您如何连接到数据库?因为通过JNDI的凭据将无法通过JUnit访问。。。测试将需要自己的硬编码凭证。从experienceWith group by发言您只能在选择列表中使用分组列和聚合。我不知道这在MySQL中是如何工作的,除了一个只有一列的表。这没有什么奇怪的,它只是无效的SQL。似乎您已经尝试使用一些伪SQL来推断您的问题。请发布在MySQL中工作的完整查询,以及您试图在HQL中执行的完整查询。