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

如何筛选同Code下仅对应唯一City值的数据表记录

问题描述

需要对包含Code、City两个字段的数据表执行筛选,筛选规则:若同一个Code对应多个不同的City值,则该Code下的所有记录都不选中,仅保留所有关联City完全一致的Code对应的记录。

原始表数据

CodeCity
3MYS
3NYR
3STA
4MYS
4MYS
5MYS

期望输出结果

CodeCity
4MYS
5MYS
实现方法

核心思路:先按Code分组,统计每个Code对应的去重City数量,仅保留数量为1的Code关联的所有记录。

SQL实现

写法1:子查询关联(兼容性最强,支持所有主流SQL数据库)

SELECT t.Code, t.City
FROM 你的表名 t
JOIN (
    SELECT Code
    FROM 你的表名
    GROUP BY Code
    HAVING COUNT(DISTINCT City) = 1
) valid_code ON t.Code = valid_code.Code

注意:统计时必须使用COUNT(DISTINCT City),不能直接用COUNT(City)或者COUNT(*),否则会把Code=4这类同城市有多条重复记录的合法数据误排除。

写法2:窗口函数写法(语法更简洁,支持MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)

SELECT Code, City
FROM (
    SELECT
        *,
        COUNT(DISTINCT City) OVER (PARTITION BY Code) AS unique_city_cnt
    FROM 你的表名
) tmp
WHERE unique_city_cnt = 1

Pandas实现(Python场景)

如果是用Python pandas处理表格数据,可使用以下代码:

import pandas as pd

# df为原始数据表变量
# 先筛选出仅对应1个唯一城市的Code
valid_codes = df.groupby('Code')['City'].nunique()[lambda x: x == 1].index
# 匹配拿到最终结果
result = df[df['Code'].isin(valid_codes)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:57:17