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

如何在SQLite中筛选检测数据不一致的异常记录

检测SQLite同产品ID对应不同名称的不一致数据

实现思路

核心分两步完成筛选:

  • 先按productID分组,过滤出关联了2个及以上不同productName的异常产品ID
  • 关联原表取出这些异常ID对应的所有不重复ID、名称组合,即为目标结果

可用SQL语句

通用CTE写法(适配SQLite 3.8.3及以上版本,覆盖绝大多数使用场景)

WITH abnormal_pids AS (
    SELECT productID
    FROM 替换为你的实际表名 -- 注意不要使用table作为表名,table是SQL保留关键字
    GROUP BY productID
    HAVING COUNT(DISTINCT productName) > 1
)
SELECT DISTINCT t.productID, t.productName
FROM 替换为你的实际表名 t
INNER JOIN abnormal_pids a ON t.productID = a.productID
ORDER BY t.productID, t.productName;

老版本兼容写法(子查询实现)

如果你的SQLite版本过低不支持CTE语法,可以改用IN子查询实现完全一致的效果:

SELECT DISTINCT productID, productName
FROM 替换为你的实际表名
WHERE productID IN (
    SELECT productID
    FROM 替换为你的实际表名
    GROUP BY productID
    HAVING COUNT(DISTINCT productName) > 1
)
ORDER BY productID, productName;

逻辑说明

  • 核心判断条件COUNT(DISTINCT productName) > 1会统计每个产品ID下不重复的名称数量,只有数量大于1时才判定为数据不一致。比如示例中productID=3虽然有2条记录,但名称均为Product D,计数为1,不会被判定为异常。
  • 外层查询加DISTINCT是为了去掉重复的ID+名称组合,避免同一个产品下多条名称完全一致的重复记录出现在结果中。

针对提供的测试数据运行上述语句,返回结果完全匹配预期:

productIDproductName
2Product B
2Product C

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

相关产品推荐
方舟 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