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

SQL中STRING_AGG去重方案咨询——校园作业遇重复值问题

解决STRING_AGG无法去重的问题

嘿,这个问题我之前也踩过坑!咱们一步步理顺来解决:

首先得指出你当前SQL里的小问题:你在GROUP BY里加了LaererID,这会让每一条老师的记录单独分组,反而导致STRING_AGG把重复的ID反复拼进去,完全偏离了你想要的效果。咱们得先把重复的老师ID去掉,再做聚合操作。

方法1:适用于所有支持STRING_AGG的SQL Server版本(2017+)

先通过CTE或者子查询,把每个课程对应的唯一老师ID筛选出来,再进行字符串聚合:

-- 用CTE先获取去重后的课程-老师关联关系
WITH UniqueTeacherCourses AS (
    SELECT DISTINCT 
        f.FagID, 
        f.FagNavn, 
        l.LaererID
    FROM Fag$ f
    JOIN Lektion$ l ON f.FagID = l.FagID
)
-- 对去重后的结果做字符串聚合
SELECT 
    FagID, 
    FagNavn, 
    STRING_AGG(LaererID, ', ') AS 'Lærer'
FROM UniqueTeacherCourses
GROUP BY FagID, FagNavn;

方法2:更简洁(适用于SQL Server 2022及以上)

从SQL Server 2022版本开始,STRING_AGG直接支持DISTINCT关键字,不用额外的子查询/CTE,一步到位:

SELECT 
    f.FagID, 
    f.FagNavn, 
    STRING_AGG(DISTINCT l.LaererID, ', ') AS 'Lærer'
FROM Fag$ f
JOIN Lektion$ l ON f.FagID = l.FagID
GROUP BY f.FagID, f.FagNavn;

这两种方法都能帮你把重复的'SNS'去掉,得到像NET = KBEN, SNS这样的干净结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:31:40