Java 如何在Hypersql数据库(HSQLDB)中选择多个列,但仅按一列分组?

Java 如何在Hypersql数据库(HSQLDB)中选择多个列,但仅按一列分组?,java,mysql,hsqldb,hypersql,Java,Mysql,Hsqldb,Hypersql,我使用的是HSQLDB-2.3.3version, 这里我展示了一个简单的MySQL查询 例如: SELECT name,age,emailid,country FROM players GROUP BY country; 但如果我在HyperSQL中执行相同的查询,它会显示一个错误, “表达式不在聚合列或分组列PUBLIC.PLAYERS.NAME中” 如果我用select语句将group应用于我选择的每一列,它将显示所有列的聚合结果 我的问题是,如何在HyperSQL中使用一列聚合(gro

我使用的是
HSQLDB-2.3.3
version, 这里我展示了一个简单的MySQL查询

例如:

SELECT name,age,emailid,country FROM players GROUP BY country;
但如果我在
HyperSQL
中执行相同的查询,它会显示一个错误,
“表达式不在聚合列或分组列PUBLIC.PLAYERS.NAME中”

如果我用
select
语句将group应用于我选择的每一列,它将显示所有列的聚合结果

我的问题是,如何在
HyperSQL
中使用一列聚合(
groupby
)显示多个列

玩家

pid
姓名
电子邮件ID
国家
地区
年龄

1
Samual
Samual@gmail.com
印度
德里
25

2
Vino
Vino@gmail.com
印度
德里
20

3
John
John@gmail.com
印度
德里
20

4
Andy
Andy@gmail.com
印度
德里
22

5
Brian
Brian@hotmail.com
美国
德里
21

6
Dew
Dew@hotmail.com
美国
德里
24

7
Kris
Kris@hotmail.com
美国
德里
25

8
William
William@hotmail.com
印度
德里
26

9
George
George@hotmail.com
印度
德里
23

10
Peter
Peter@gmail.com
印度
德里
19

11
Tom
Tom@gmail.com
美国
德里
20

12
Andre
Andre@hotmail.com
印度
德里
20

预期的
结果

姓名
年龄
电子邮件ID
国家

Brian
21
Brian@hotmail.com
美国


Samual
25
Samual@gmail.com
印度

在MySQL中实现GORUP BY与其他遵循SQL标准的数据库不同。在这种情况下,查询不应该工作

您期望的结果包含每个国家的
pid
最低的人。您可以编写一个查询,明确要求:

SELECT name, age, emailid, country FROM players 
    WHERE pid IN (SELECT MIN(pid) FROM players GROUP BY country)

查询首先查找每个国家/地区的最低
pid
。然后,它选择包含这些
pid
值的两行。

在MySQL中实现GORUP BY与遵循SQL标准的其他数据库不同。在这种情况下,查询不应该工作

您期望的结果包含每个国家的
pid
最低的人。您可以编写一个查询,明确要求:

SELECT name, age, emailid, country FROM players 
    WHERE pid IN (SELECT MIN(pid) FROM players GROUP BY country)

查询首先查找每个国家/地区的最低
pid
。然后选择包含这些
pid
值的两行。

请添加一些示例数据和预期结果。例如,如果两个不同的人在同一个国家/地区,您希望在该国家/地区的分组行中返回哪些数据。请添加一些示例数据和预期结果。例如,如果两个不同的人在同一个国家/地区,您希望在该国家/地区的分组行中返回哪些数据。