我是一个 SQL 初学者,遇到了以下问题。考虑一个包含国家、该国家内的城市及其人口数据的表格:
CREATE TABLE cities (
country VARCHAR(20),
city VARCHAR(20),
population INT
);
INSERT INTO cities VALUES
('Italy', 'Milano', 1000000),
('Italy', 'Rome', 2000000),
('Italy', 'Bologna', 800000),
('Poland', 'Warszawa', 1000000),
('Poland', 'Wroclaw', 700000);
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询,返回国家/地区名称及其最大城市的人口和城市名称本身。前两个字段使用 很简单GROUP BY。但是,我不知道如何包含最大城市的名称。我试过:
SELECT
country, MAX(population), city
FROM
cities
WHERE
population = (SELECT
MAX(population)
FROM
cities
)
GROUP BY country, city;
Run Code Online (Sandbox Code Playgroud)
但这只选择了一项记录(有关罗马的记录)。我希望查询为每个国家/地区组返回一条记录,即本例中为罗马和华沙。条件WHERE不能是:
population = (SELECT
MAX(population)
FROM
cities
GROUP BY country)
Run Code Online (Sandbox Code Playgroud)
因为这样子查询返回两行,导致主查询中出现错误1242。