You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单查询中找出人口最多的城市?无需临时表的实现方案

不用临时表,单条查询找出人口最多城市的几种方法

当然可以!完全不需要临时表,用单条SQL就能轻松实现需求,这里给你整理几个简洁实用的写法,适配不同场景:

1. 窗口函数法(灵活应对并列情况)

这是最推荐的写法之一,尤其是当存在多个城市人口并列第一时,能精准返回所有符合条件的记录。我们可以用RANK()或ROW_NUMBER()窗口函数:

SELECT city_name, population
FROM (
    SELECT 
        city_name, 
        population,
        -- RANK()会保留并列排名,比如两个第一都显示rank_num=1
        RANK() OVER(ORDER BY population DESC) AS rank_num
    FROM cities
) ranked_cities
WHERE rank_num = 1;

如果你的需求是即使有并列也只返回一条(比如随机选一个),把RANK()换成ROW_NUMBER()即可。

2. 子查询关联法(最简洁直观)

先通过子查询找出最大人口数,再关联原表匹配对应城市,写法非常简洁,性能也很出色:

SELECT city_name, population
FROM cities
WHERE population = (SELECT MAX(population) FROM cities);

这个方法逻辑清晰,数据库优化器通常会自动优化查询计划,适合大多数常规场景。

3. TOP/LIMIT 专属语法(快速取单条结果)

如果你的需求只是获取任意一个人口最多的城市(不关心并列情况),可以用各数据库的专属语法,写法更短:

  • MySQL/PostgreSQL/SQLite:
SELECT city_name, population
FROM cities
ORDER BY population DESC
LIMIT 1;
  • SQL Server:
SELECT TOP 1 city_name, population
FROM cities
ORDER BY population DESC;
  • Oracle:
SELECT city_name, population
FROM cities
ORDER BY population DESC
FETCH FIRST 1 ROW ONLY;

⚠️ 注意:这种写法在有多个城市人口相同时,只会返回其中一条,所以如果需要所有并列第一的记录,优先选前两种方法。

内容的提问来源于stack exchange,提问作者A.B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:34:36