限制一列的结果
问题描述:
我有两个表区域(名称,编号),城市(地区编号,姓名,人口),我想返回人口最多的前5个城市以及该地区的名称。这是我的查询,但它只返回一个区域的5个城市(北在这种情况下),而不是所有地区:限制一列的结果
SELECT region.name AS region_name, city.name AS city_name, city.population AS population
FROM region INNER JOIN (SELECT city.name, city.population, city.region_code
FROM county LIMIT 5) AS city
ON region.code = city.region_code;
所需的输出:
region_name | city_name | population
------------+----------------------------+------------
NORTH | A | 226338
NORTH | B | 13656
NORTH | C | 9478
NORTH | D | 2464
NORTH | E | 2464
WEST | A | 226338
WEST | B | 13656
WEST | C | 9478
WEST | D | 2464
WEST | E | 2464
感谢您对您的帮助提前:)
答
作为一般规则,不要使用limit
而不使用order by
。你得到五个任意城市。
你想要做的是在MySQL中有点痛苦。以下应工作,虽然:
SELECT r.name AS region_name, c.name AS city_name, c.population AS population
FROM region r INNER JOIN
county c
ON r.code = c.region_code
WHERE 5 >= (SELECT count(*)
FROM county c2
WHERE c2.region_code = c.region_code and c2.population >= c.population
)
ORDER BY region, population DESC;
的where
条款与计数大于给定城市一样大或更大的人口的城市的数量。返回的唯一城市是前5名。
它的工作,非常感谢你:) – Mera 2014-11-04 06:01:19