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

如何修改含临时表的SQL查询以消除studentvisit临时表重复记录?

解决studentvisit临时表重复记录的方案

你的问题出在DISTINCT是基于所有选中字段的组合去重,如果这些字段中存在任何细微差异(比如studentvisitstarttime的毫秒数不同、某个字段有不同值),都会被判定为不同记录而保留。要精准去重,建议用窗口函数替代DISTINCT,根据业务逻辑确定唯一标识规则。

修改后的完整查询代码

with clientbridge as (
    Select *
    from (
        Select 
            visitorid, --Visid
            roomnumber,
            room_id,
            profid,
            student_id,
            cohd.datekey, -- 修正原代码字段引用错误,表别名是cohd而非ambc
            RANK() over(PARTITION BY visitorid,student_id,profid ORDER BY cohd.datekey desc) as rn
        from university.course_office_hour_bridge cohd
        --where student_id = '9999999-aaaa-6634-bbbb-96fa18a9046e'
    ) t
    where rn = 1 
),

studentvisit as (
    SELECT *
    FROM (
        SELECT
            visid_visitorid,
            uniquevisitkey,
            studentaccountid_5,
            profid_officenumber_8,
            studentvisitstarttime,
            room_id_115,
            qqq144, --Course Name
            qqq145, -- Course Office Hour Benefit
            qqq146, --Course Office Hour ID
            datekey,
            -- 核心:按业务唯一键分区,这里假设uniquevisitkey是单条访问的唯一标识
            -- 如果uniquevisitkey不唯一,可替换为组合字段,比如visid_visitorid + qqq146 + datekey
            -- 按访问时间降序,保留最新的一条记录
            ROW_NUMBER() OVER(PARTITION BY uniquevisitkey ORDER BY studentvisitstarttime DESC) AS rn
        FROM university.office_hour_details ohd
        WHERE DateKey >= '2022-10-01'
          AND (qqq146 <> '')
    ) t
    WHERE rn = 1 -- 只保留每组的第一条,实现精准去重
)
select *
from clientbridge ab 
inner join studentvisit sv on sv.visid_visitorid = ab.visitorid -- 修正原代码别名错误,cb改为ab

关键修改说明

  1. 替换DISTINCT为窗口函数:

    • 用ROW_NUMBER()按你认定的唯一标识字段/字段组合分区(比如uniquevisitkey,或visid_visitorid+qqq146+datekey),确保每组只保留一条记录。
    • 可以通过ORDER BY指定保留哪一条(比如最新的studentvisitstarttime),比DISTINCT更灵活可控。
  2. 修正两处语法错误:

    • 原查询中clientbridge子查询里的ambc.datekey属于字段引用错误,表别名实际是cohd,已修正。
    • 最后关联查询时,clientbridge的别名是ab,但写了cb.visitorid,已修正为ab.visitorid。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:35:19