UCanAccess 分组依据
UCanAccess Group By
需要学习如何使用 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 数据库一起使用,它工作正常,但是当我尝试使用 .mdb UCanAccess 时,它会抛出这样的空指针错误
java.sql.SQLSyntaxErrorException: expression not in aggregate or GROUP BY columns: PUBLIC.FIX_BAT_SUM.ROUTE_TO
希望得到一些帮助
您必须在 GROUP BY
子句中列出所有非聚合列。
GROUP BY Route_To, BatchNo, BatchScOpr, BatchTrack, Time_Stamp
MySQL 比其他数据库更宽松,尽管默认值在 MySQL 5.7.
中发生了变化
MySQL 为允许处理查询的 GROUP BY 提供非标准扩展。
通过在 sql_mode
中包含 ONLY_FULL_GROUP_BY
,我们可以使 MySQL 表现出与其他关系数据库类似的行为。这样一来,MySQL 将 return 一个类似于 return 由其他 RDBMS 编辑的错误。
有关行为的解释,请参阅 MySQL 参考手册:
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
"aggregate expression" 指的是聚合函数之一的结果,例如 MAX()
、MIN()
、AVG()
对一组行进行运算以 return 单个值。
作为问题的简单示例:
foo bar
---- ----
1 a
1 b
3 c
1 d
使用此查询
SELECT foo, bar FROM mytable GROUP BY foo
GROUP BY 子句将导致行集 "collapsed"。请注意,对于 foo=1,有 三个 可能的值可以 returned 用于 bar。应该 return 编辑哪些值?
如果我们指定 MAX(bar)
或 MIN(bar)
代替 bar
,我们就是在指定 return 的值。如果没有聚合,结果将是不确定的。 MySQL可以选择return三个值中的任意一个。
SQL 的标准行为是拒绝查询。
需要学习如何使用 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 数据库一起使用,它工作正常,但是当我尝试使用 .mdb UCanAccess 时,它会抛出这样的空指针错误
java.sql.SQLSyntaxErrorException: expression not in aggregate or GROUP BY columns: PUBLIC.FIX_BAT_SUM.ROUTE_TO
希望得到一些帮助
您必须在 GROUP BY
子句中列出所有非聚合列。
GROUP BY Route_To, BatchNo, BatchScOpr, BatchTrack, Time_Stamp
MySQL 比其他数据库更宽松,尽管默认值在 MySQL 5.7.
中发生了变化MySQL 为允许处理查询的 GROUP BY 提供非标准扩展。
通过在 sql_mode
中包含 ONLY_FULL_GROUP_BY
,我们可以使 MySQL 表现出与其他关系数据库类似的行为。这样一来,MySQL 将 return 一个类似于 return 由其他 RDBMS 编辑的错误。
有关行为的解释,请参阅 MySQL 参考手册:
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
"aggregate expression" 指的是聚合函数之一的结果,例如 MAX()
、MIN()
、AVG()
对一组行进行运算以 return 单个值。
作为问题的简单示例:
foo bar
---- ----
1 a
1 b
3 c
1 d
使用此查询
SELECT foo, bar FROM mytable GROUP BY foo
GROUP BY 子句将导致行集 "collapsed"。请注意,对于 foo=1,有 三个 可能的值可以 returned 用于 bar。应该 return 编辑哪些值?
如果我们指定 MAX(bar)
或 MIN(bar)
代替 bar
,我们就是在指定 return 的值。如果没有聚合,结果将是不确定的。 MySQL可以选择return三个值中的任意一个。
SQL 的标准行为是拒绝查询。