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

如何在SQL中统计重复记录总数并赋值给变量

计算SQL表变量中重复记录的总数并赋值给变量

看起来你已经找到了分组筛选重复项的思路,但还需要把每个重复组的记录数求和才能得到目标的总数(比如示例里的2+2=4)。你的原查询返回的是每个重复ProductId的出现次数,但变量只能存储单个值,所以得先把这些多行结果聚合起来。

这里有两种可行的解决方案:

方法一:嵌套查询求和

先通过内层查询分组统计每个重复ProductId的记录数,再在外层对这些数值求和并赋值给变量:

DECLARE @duplicateCount INT;

SELECT @duplicateCount = SUM(group_count)
FROM (
    -- 分组统计每个ProductId的出现次数,只保留出现多次的组
    SELECT COUNT(ProductId) AS group_count
    FROM @Product
    GROUP BY ProductId
    HAVING COUNT(*) > 1
) AS duplicate_groups;

-- 验证结果,会返回符合需求的4
SELECT @duplicateCount;

方法二:总记录数与唯一记录数的差值(注意场景差异)

如果你实际需求是重复的次数(即每个组排除第一条后的数量),可以用总记录数减去唯一ProductId的数量,但这个方法得到的结果是2(7-5),和你的示例需求不符,仅作场景对比参考:

DECLARE @duplicateCount INT;

SELECT @duplicateCount = (SELECT COUNT(*) FROM @Product) - (SELECT COUNT(DISTINCT ProductId) FROM @Product);

SELECT @duplicateCount;

补充说明

你的原查询之所以无法直接赋值给变量,是因为它返回了多行结果(两个2),而单个变量只能存储一个值,必须通过SUM这类聚合函数将多行结果合并成单个值后,才能完成赋值操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:42:46