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

如何编写SQL自连接语句,查询流量不一致的访问记录?

解决方案

核心逻辑是筛选出「当前用户不存在访问过当前记录src对应页面」的记录,有两种常见实现方式:

方案1:NOT EXISTS实现(逻辑最直观,性能更优)

直接子查询校验同用户是否有访问过src页的历史,不存在即为异常记录:

SELECT V1.url, V1.uid, V1.dt, V1.src, V1.rev
FROM Visit V1
WHERE NOT EXISTS (
    SELECT 1 
    FROM Visit V2 
    WHERE V2.uid = V1.uid 
      AND V2.url = V1.src
);

方案2:LEFT JOIN实现(适配你原有的自连接思路)

左连接关联同用户的访问记录匹配src页,关联不上的即为异常记录:

SELECT DISTINCT V1.url, V1.uid, V1.dt, V1.src, V1.rev
FROM Visit V1
LEFT JOIN Visit V2 
  ON V1.uid = V2.uid 
  AND V1.src = V2.url
WHERE V2.url IS NULL;

原代码问题说明

你原来写的内连接逻辑只会保留「用户确实访问过src页」的正常记录,和你要找的异常记录刚好是补集,所以只要反向筛选关联不上的记录即可,不需要额外加GROUP BY。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:05