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

SQL查询去重求助:同SessionID仅保留一行的实现方案

解决方案:针对SessionID去重的SQL查询优化

先修正原查询的语法错误

原语句中ORDER BY SCS.UserName ASC的SCS是无效表别名,应改为S.UserName,这可能是导致之前操作未达预期的原因之一。


方案1:使用DISTINCT(适用于同SessionID对应所有列完全重复的场景)

直接在SELECT后添加DISTINCT关键字,过滤完全重复的行:

SELECT DISTINCT
    S.SessionID
    , S.UserName
    , S.MachineName
    , I.SrvName
    , A.ApplicationName
    , A.WindowUniqueID
FROM Inventory I 
INNER JOIN Session S ON S.SrvID = I.SrvID
LEFT JOIN Application A ON S.SessionID = A.SSessionID AND S.SessionDay = A.SessionDay
WHERE S.Date >= '2021-08-26' AND S.Date < '2021-08-30'
ORDER BY S.UserName ASC

方案2:使用ROW_NUMBER()窗口函数(适用于同SessionID对应列存在差异,需保留任意一行的场景)

通过窗口函数按SessionID分区,为每个分区的行编号,仅保留编号为1的行:

WITH RankedSessions AS (
    SELECT 
        S.SessionID
        , S.UserName
        , S.MachineName
        , I.SrvName
        , A.ApplicationName
        , A.WindowUniqueID
        -- 按SessionID分区,随机取一行;若需指定规则,可替换(SELECT NULL)为排序字段,比如A.WindowUniqueID DESC
        , ROW_NUMBER() OVER (PARTITION BY S.SessionID ORDER BY (SELECT NULL)) AS rn
    FROM Inventory I 
    INNER JOIN Session S ON S.SrvID = I.SrvID
    LEFT JOIN Application A ON S.SessionID = A.SSessionID AND S.SessionDay = A.SessionDay
    WHERE S.Date >= '2021-08-26' AND S.Date < '2021-08-30'
)
SELECT 
    SessionID
    , UserName
    , MachineName
    , SrvName
    , ApplicationName
    , WindowUniqueID
FROM RankedSessions
WHERE rn = 1
ORDER BY UserName ASC

方案3:使用GROUP BY(适用于同SessionID对应所有列完全一致的场景)

将SELECT中的所有非聚合列加入GROUP BY子句,实现去重:

SELECT 
    S.SessionID
    , S.UserName
    , S.MachineName
    , I.SrvName
    , A.ApplicationName
    , A.WindowUniqueID
FROM Inventory I 
INNER JOIN Session S ON S.SrvID = I.SrvID
LEFT JOIN Application A ON S.SessionID = A.SSessionID AND S.SessionDay = A.SessionDay
WHERE S.Date >= '2021-08-26' AND S.Date < '2021-08-30'
GROUP BY 
    S.SessionID
    , S.UserName
    , S.MachineName
    , I.SrvName
    , A.ApplicationName
    , A.WindowUniqueID
ORDER BY S.UserName ASC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:54:58