QuickSight中如何从两同结构表识别流失活跃用户?
找出已离开应用的用户(左表存在、右表缺失)
下面提供几种通用的SQL查询方案,适用于绝大多数关系型数据库:
方案1:LEFT JOIN 筛选NULL记录(最通用)
SELECT 左表.* FROM 左表 LEFT JOIN 右表 ON 左表.user_id = 右表.user_id WHERE 右表.user_id IS NULL;
通过左连接关联两张表的用户唯一标识(比如user_id),右表中匹配不到的用户对应的字段会返回NULL,筛选这类记录即可得到目标用户。
方案2:NOT EXISTS 子查询(逻辑直观)
SELECT * FROM 左表 WHERE NOT EXISTS ( SELECT 1 FROM 右表 WHERE 右表.user_id = 左表.user_id );
逐个检查左表的用户,仅保留那些在右表中完全不存在的记录,逻辑更直白,部分数据库下性能表现更优。
方案3:EXCEPT 集合运算(适用于支持该语法的数据库)
如果你的数据库支持集合运算(如PostgreSQL、SQL Server、MySQL 8.0+等),可以直接取两张表的差集:
SELECT user_id, 其他用户字段 FROM 左表 EXCEPT SELECT user_id, 其他用户字段 FROM 右表;
注意:两个查询的字段数量、数据类型必须完全一致,由于你的两张表结构完全相同,直接对应字段即可。
注意事项
- 必须使用唯一标识用户的字段(如
user_id)进行关联,避免用可能重复的字段(如用户名)导致结果错误 - 若表数据量较大,建议给关联字段添加索引,提升查询效率
内容的提问来源于stack exchange,提问作者ren
相关产品推荐
相关产品推荐

