需要学习如何与UCanAccess一起工作,在这里我可以通过这些选择使用一个组。
String sql = "SELECT Route_To, BatchNo, BatchScOpr, BatchTrack, Time_Stamp,
sum(fix_bat_sum.STOTS + fix_bat_sum.STOTR) AS Sum
FROM fix_bat_sum GROUP BY fix_bat_sum.BatchNo";我在一个MySQL DB中使用了它,它工作得很好,但是当我尝试使用.mdb时,UCanAccess会抛出空指针,如下所示
java.sql.SQLSyntaxErrorException: expression not in aggregate or GROUP BY columns: PUBLIC.FIX_BAT_SUM.ROUTE_TO会喜欢一些帮助的人
发布于 2017-10-02 20:31:35
您必须列出GROUP BY子句中的所有非聚合列。
GROUP BY Route_To, BatchNo, BatchScOpr, BatchTrack, Time_Stamp与其他数据库相比,MySQL对此更为宽容,尽管MySQL 5.7中的默认设置发生了变化。
发布于 2017-10-02 20:34:08
MySQL为GROUP提供了一个非标准的扩展,它允许处理查询。
通过在MySQL中包含ONLY_FULL_GROUP_BY,我们可以让sql_mode显示出类似于其他关系数据库的行为。这样,MySQL将返回一个类似于其他RDBMS返回的错误。
有关此行为的解释,请参阅MySQL参考手册:
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
“聚合表达式”指聚合函数之一的结果,例如MAX()、MIN()、AVG(),它们对一组行进行操作以返回单个值。
作为这个问题的一个简单例子:
foo bar
---- ----
1 a
1 b
3 c
1 d使用此查询
SELECT foo, bar FROM mytable GROUP BY foo GROUP BY子句将导致行集“折叠”。请注意,对于foo=1,可以为bar返回三个可能的值。哪些值应该返回?
如果我们指定MAX(bar)或MIN(bar)代替bar,则指定要返回的值。如果没有聚合,结果将是不确定的。MySQL可以选择返回这三个值中的任何一个。
SQL的标准行为是拒绝查询。
https://stackoverflow.com/questions/46533220
复制相似问题