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

如何在MySQL中识别重复值?实现employee_monitor表Rank标记查询

问题描述

现有数据表employee_monitor,结构及数据如下:

NameCodeValueGain
Zakir1015
Zakir1016
Tame1119
Raya1212
Zakir1020
Tame1128

需要编写MySQL查询语句,生成包含Rank字段的结果集:Rank=1表示对应Code的首次出现记录,Rank=0表示该Code的重复记录,目标结果如下:

NameCodeValueGainRank
Zakir10151
Zakir10160
Tame11191
Raya12121
Zakir10200
Tame11280

解决方案

使用窗口函数ROW_NUMBER()对每个Code分组内的记录排序,结合条件判断生成Rank值:

SELECT
    Name,
    Code,
    ValueGain,
    CASE 
        WHEN ROW_NUMBER() OVER (PARTITION BY Code ORDER BY (SELECT 1)) = 1 
        THEN 1 
        ELSE 0 
    END AS `Rank`
FROM employee_monitor;

说明

  • PARTITION BY Code:按Code字段分组,确保仅在相同Code的记录范围内计算行号
  • ORDER BY (SELECT 1):保留原表的记录顺序,若需要按特定字段(如ValueGain)定义"首次出现"的顺序,可将(SELECT 1)替换为对应字段名
  • CASE表达式:判断分组内的行号是否为1,是则标记为1,否则标记为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:15:32