Hypersql数据库(HSQLDB)如何select多列但只按一列分组?
How to select multiple columns but group by only one column in Hypersql database(HSQLDB)?
我使用的是HSQLDB-2.3.3
版本,
我在这里展示了一个简单的 MySQL 查询。
示例:
SELECT name,age,emailid,country FROM players GROUP BY country;
但是如果我在 HyperSQL
中执行相同的查询,它会显示错误,
"Expression not in aggregate or group by columns PUBLIC.PLAYERS.NAME"
如果我将组应用于我使用 select
语句选择的每一列,它会显示所有列的聚合结果。
我的问题是,如何在HyperSQL
中用一列聚合(GROUP BY
)显示多列??
Table Players
:
pid
name
emailid
country
region
age
1
Samual
Samual@gmail.com
INDIA
DELHI
25
2
Vino
Vino@gmail.com
INDIA
DELHI
20
3
John
John@gmail.com
INDIA
DELHI
20
4
Andy
Andy@gmail.com
INDIA
DELHI
22
5
Brian
Brian@hotmail.com
America
DELHI
21
6
Dew
Dew@hotmail.com
America
DELHI
24
7
Kris
Kris@hotmail.com
America
DELHI
25
8
William
William@hotmail.com
INDIA
DELHI
26
9
George
George@hotmail.com
INDIA
DELHI
23
10
Peter
Peter@gmail.com
INDIA
DELHI
19
11
Tom
Tom@gmail.com
America
DELHI
20
12
Andre
Andre@hotmail.com
INDIA
DELHI
20
预计Result
:
name
age
emailid
country
Brian
21
Brian@hotmail.com
America
Samual
25
Samual@gmail.com
INDIA
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
值的两行。
我使用的是HSQLDB-2.3.3
版本,
我在这里展示了一个简单的 MySQL 查询。
示例:
SELECT name,age,emailid,country FROM players GROUP BY country;
但是如果我在 HyperSQL
中执行相同的查询,它会显示错误,
"Expression not in aggregate or group by columns PUBLIC.PLAYERS.NAME"
如果我将组应用于我使用 select
语句选择的每一列,它会显示所有列的聚合结果。
我的问题是,如何在HyperSQL
中用一列聚合(GROUP BY
)显示多列??
Table Players
:
pid
name
emailid
country
region
age
1
Samual
Samual@gmail.com
INDIA
DELHI
25
2
Vino
Vino@gmail.com
INDIA
DELHI
20
3
John
John@gmail.com
INDIA
DELHI
20
4
Andy
Andy@gmail.com
INDIA
DELHI
22
5
Brian
Brian@hotmail.com
America
DELHI
21
6
Dew
Dew@hotmail.com
America
DELHI
24
7
Kris
Kris@hotmail.com
America
DELHI
25
8
William
William@hotmail.com
INDIA
DELHI
26
9
George
George@hotmail.com
INDIA
DELHI
23
10
Peter
Peter@gmail.com
INDIA
DELHI
19
11
Tom
Tom@gmail.com
America
DELHI
20
12
Andre
Andre@hotmail.com
INDIA
DELHI
20
预计Result
:
name
age
emailid
country
Brian
21
Brian@hotmail.com
America
Samual
25
Samual@gmail.com
INDIA
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
值的两行。