【发布时间】:2021-11-04 05:46:48
【问题描述】:
我在 SQL 数据库中有一组表:
- states={id, name}:
| id | name. |
|---|---|
| 1 | PACA |
| 2 | Ile de France |
- counties={id, name, state_id},
| id | name | state_id |
|---|---|---|
| 1 | Paris. | 2 |
| 2 | Bouches du Rhône | 1 |
| 3 | Var | 1 |
- cities={id, name, population,county_id}
| id | name | population | county_id |
|---|---|---|---|
| 1 | Paris | 2000000 | 1 |
| 2 | Marseille | 1900000 | 2 |
| 3 | Toulon | 952000 | 2 |
| 4 | Hyères | 52575 | 2 |
并且能够按县提取人口最多的城市,即:
| city_name | most_populated | county_name |
|---|---|---|
| Paris. | 2000000. | Paris. |
| Marseille | 1900000. | Bouches. |
尝试执行此查询,但没有成功:
SELECT c.id cid, c.name, ci.name,
(SELECT sci.population FROM counties sc JOIN cities sci
ON sc.id = sci.county_id
WHERE sc.id = cid
ORDER BY sci.population DESC
LIMIT 1) AS city_most_populated
FROM counties c JOIN cities ci ON c.id = ci.county_id
GROUP BY c.id;
结果不是我预期的,不知道如何实现这种查询。
谢谢帮助
【问题讨论】:
-
您的 GROUP BY 无效,并且会在较新的 MySQL 版本上引发错误(除非在兼容模式下。)
-
轻松为您提供帮助,同时向我们展示示例表数据(与您想要的结果相匹配)。即minimal reproducible example.
-
是的...确实...
-
MySQL 5.x 还是 MySQL 8?
-
@MatBailie 服务器版本 5.7