尝试获取jdbc中未分组的列时发生异常

尝试获取jdbc中未分组的列时发生异常,jdbc,Jdbc,我有一个名为test的表,定义如下: A bigint(20) NOT NULL B bigint(20) NULL 我正在尝试执行以下准备好的语句: sql = "SELECT * FROM test GROUP BY B"; PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet rs = preparedStatement.executeQuery(); 但我有以下例外: Ca

我有一个名为test的表,定义如下:

A bigint(20) NOT NULL
B bigint(20) NULL
我正在尝试执行以下准备好的语句:

sql = "SELECT * FROM  test GROUP BY B";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet rs = preparedStatement.executeQuery();
但我有以下例外:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 'anya_products.test.A' isn't in GROUP BY
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
完全相同的查询在SQLYog中工作。有什么问题?JDBC限制

谢谢
Udi

以下是我的想法。不确定这是最有效的还是唯一的方法,但它似乎至少起了作用:

select test.a, test.b from test 
inner join (select b, count(b) from test group by b having count(b) = 1) as c
    on test.b = c.b

group by旨在与聚合函数(sum、count、avg等)一起使用。您到底想做什么?你不想改成B点菜吗?不。这并不重要,但假设我想使用have count(b)=1,我建议您使用示例数据集编辑您的问题,以及您希望查询返回的内容。这并不重要。数据并不重要。有一个SQLSyntax异常。由于SQL无效,MySQL不知道您想做什么,我们也不知道。但是如果你不想得到帮助。。。