You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL如何在TDNO列存在重复数据时仅保留第一条数据?

这问题挺常见的,根据你日常使用的工具不同,解法也不一样,我给你列几个常用场景的实现方法:

方法1:使用Excel实现

Excel自带的删除重复值功能就能轻松搞定,而且默认会保留每组重复数据的第一条,步骤如下:

  • 选中包含表头在内的所有数据区域
  • 切换到「数据」选项卡,点击「删除重复值」按钮
  • 在弹出的对话框中,只勾选「TDNO」这一列(确保其他列不被勾选)
  • 点击「确定」,Excel就会自动删除TDNO重复的后续行,只保留每组的第一条记录
方法2:使用SQL实现

如果数据存储在数据库里,可以用窗口函数来筛选出每组的第一条记录。这里以MySQL为例,其他数据库(如PostgreSQL、SQL Server)语法类似:

-- 先给每条记录按TDNO分组并编号,每组内第一条编号为1
WITH ranked_records AS (
    SELECT 
        TDNO,
        Location,
        ROW_NUMBER() OVER (PARTITION BY TDNO ORDER BY (SELECT NULL)) AS row_num
    FROM your_table_name -- 替换成你的表名
)
-- 只保留编号为1的记录
SELECT TDNO, Location
FROM ranked_records
WHERE row_num = 1;

提示ORDER BY (SELECT NULL)是让数据库尽量保留原数据的顺序,如果你的表有明确的排序字段(比如主键ID、创建时间),可以把(SELECT NULL)替换成那个字段,结果会更准确。

方法3:使用Python(Pandas)实现

如果用Python处理数据,Pandas库的drop_duplicates方法刚好能满足需求:

import pandas as pd

# 读取数据,这里假设是CSV格式,根据实际情况调整读取方式
df = pd.read_csv("your_data_file.csv")

# 删除TDNO重复的行,保留每组的第一条
filtered_df = df.drop_duplicates(subset="TDNO", keep="first")

# 查看结果
print(filtered_df)

# 保存筛选后的结果到新文件
filtered_df.to_csv("filtered_result.csv", index=False)

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

火山引擎 最新活动