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

如何在SQL查询中排除出现次数少于3次的城市数据行?

问题描述

现有一张名为cities的表,数据如下:

IDcity
1paris
2paris
3london
4london
5london
6london

需要查询排除所有出现次数少于3次的城市对应的行(即移除paris相关的记录),预期结果如下:

IDcity
3london
4london
5london
6london
解决方案

这里提供两种常用的实现方式:

方法一:子查询+关联筛选

先统计每个城市的出现次数,筛选出符合条件的城市,再关联原表获取对应行:

SELECT c.ID, c.city
FROM cities c
JOIN (
    SELECT city
    FROM cities
    GROUP BY city
    HAVING COUNT(*) >= 3
) city_counts ON c.city = city_counts.city;

方法二:窗口函数(适用于支持窗口函数的数据库)

通过窗口函数直接计算每个城市的总出现次数,再筛选符合条件的行:

SELECT ID, city
FROM (
    SELECT 
        ID, 
        city,
        COUNT(*) OVER (PARTITION BY city) AS city_total
    FROM cities
) filtered_cities
WHERE city_total >= 3;

这种方法不需要额外的关联操作,在支持窗口函数的数据库(比如MySQL 8.0+、PostgreSQL、SQL Server等)中使用更简洁。

内容的提问来源于stack exchange,提问作者DragonToes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:15:05