H2 DB - Column must be in Group By list

∥☆過路亽.° 提交于 2020-01-11 05:27:07

问题


i am using H2-DB to access static databases...

i have a table which looks like:

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

its a huge list with lots of countries, most of them just have Country and State (like Germany here, whereas State's are Cities), a few also have a City (like USA here)...

the problem is now, when i query

SELECT * FROM MyTable WHERE COUNTRY = 'Germany' group by STATE order by STATE

to get a sorted list of the states (or cities), i get an error saying

Field CITY must be in the GROUP BY list

if the row has a city, i need the whole row, otherwise i would only need the State column, but i can just know after having queried it, wether it uses the city column or not, so i have to query "*" instead of "STATE"

the query should be okay, or? On MySql it is properly working... so whats the problem here?

Found this if it helps: http://www.h2database.com/javadoc/org/h2/constant/ErrorCode.html#c90016

Metin


回答1:


MySQL is broken in regards to this. It allows columns in the GROUP BY that are neither in the group by nor arguments to aggregation functions. In fact, the documentation warns against using this extension.

So you can do:

SELECT state
FROM DIYANET
WHERE COUNTRY = 'Germany'
GROUP BY STATE 
ORDER BY STATE;

Or something like this:

SELECT state, min(city), min(lat), . . .
FROM DIYANET
WHERE COUNTRY = 'Germany'
GROUP BY STATE 
ORDER BY STATE;

But SELECT * is not allowed and doesn't really make sense.



来源:https://stackoverflow.com/questions/31596497/h2-db-column-must-be-in-group-by-list

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!