如何解决H2 DB-列必须在“分组依据”列表中
MysqL就此而言是坏的。它允许聚合函数GROUP BY
的group
by
或参数中都不存在的列。实际上,文档警告不要使用此扩展名。
因此,您可以执行以下操作:
SELECT state
FROM DIYANET
WHERE COUNTRY = 'Germany'
GROUP BY STATE
ORDER BY STATE;
或类似这样的东西:
SELECT state, min(city), min(lat), . . .
FROM DIYANET
WHERE COUNTRY = 'Germany'
GROUP BY STATE
ORDER BY STATE;
但是这SELECT *
是不允许的,并且没有任何意义。
解决方法
我正在使用H2-DB访问静态数据库…
我有一张桌子,看起来像:
COUNTRY STATE CITY LAT LNG COUNTRYID STATEID CITYID
"Germany" "Berlin" "" 1.23 1.23 1 1 0
"Germany" "München" "" 1.23 1.23 1 2 0
"USA" "Alabama" "Auburn" 1.23 1.23 2 1 1
"USA" "Alabama" "Birmingham" 1.23 1.23 2 1 2
"USA" "Alaska" "Anchorage" 1.23 1.23 2 2 1
"USA" "Alaska" "Cordova" 1.23 1.23 2 2 2
它的名单很多,有很多国家,其中大多数只有国家和州(例如德国在这里,而州是城市),也有一个城市(在这里是美国)…
问题是现在,当我查询
SELECT * FROM MyTable WHERE COUNTRY = 'Germany' group by STATE order by STATE
为了得到州(或城市)的排序列表,我收到一条错误消息,说
Field CITY must be in the GROUP BY list
如果该行有一个城市,我需要整行,否则我只需要State列,但是查询后我可以知道,是否使用了city列,所以我必须查询“ *”的“ STATE”
查询应该可以,还是?在MySql上它可以正常工作…所以这里出了什么问题?
发现此内容是否有帮助:http
:
//www.h2database.com/javadoc/org/h2/constant/ErrorCode.html#c90016
梅丁
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。