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

SQL基于多列判断行唯一性 首次记录标1重复标0

按指定列分组标记首条唯一记录的SQL实现

核心实现逻辑是使用窗口函数ROW_NUMBER(),按指定的4个判定列分区,按主键升序排序确定记录出现顺序,组内第一条记录标记为1,其余标记为0即可。

实现代码

注意:以下写法适配MySQL,列名带空格、使用关键字作为别名时用反引号包裹,其他数据库可根据语法替换标识符(SQL Server用方括号[]、PostgreSQL/Oracle用双引号"")

SELECT
    `Primary Key`,
    StoreID,
    InventoryID,
    CheckoutID,
    `Postal Code`,
    UserID,
    CASE
        WHEN ROW_NUMBER() OVER (
            PARTITION BY InventoryID, CheckoutID, `Postal Code`, UserID
            ORDER BY `Primary Key` ASC
        ) = 1 THEN 1
        ELSE 0
    END AS `unique`
FROM 你的测试表名;

逻辑说明

  • PARTITION BY InventoryID, CheckoutID, Postal Code, UserID:按照需求指定的4个列做分组,列值完全一致的记录会被分到同一组做重复判定
  • ORDER BY Primary Key ASC:因为主键是自增序列,主键值越小代表记录写入越早,按主键升序排序可以准确拿到组内首次出现的记录
  • ROW_NUMBER()函数会给同组内的记录从1开始按顺序生成连续序号,序号为1的就是组内首条记录,赋值1;其余序号大于1的为组内重复记录,赋值0,最终输出和给出的样例结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:03:43