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

如何筛选DefaultMessage列存在重复值的数据集?

查找不同TravellerID下重复的DefaultMessage条目

需要从包含10000+行数据的表中,找出不同TravellerID下拥有相同DefaultMessage的条目,无法提前知道具体消息内容,因此不能在WHERE子句中指定固定搜索值。之前尝试自连接(SELF JOIN)但返回了全部数据,未达到预期效果。

示例数据表

TravellerIDTravellerDefaultMessage
1J: 182I travelled to US
2J: 192I travelled to IND
3K: 901I travelled to GBR
4M: 531I travelled to US
5N: 231I travelled to AUS

期望输出

TravellerIDTravellerDefaultMessage
1J: 182I travelled to US
4M: 531I travelled to US

方法1:分组统计+子查询(推荐,大数据量效率更高)

先通过分组筛选出被多个不同用户使用的DefaultMessage,再关联原表获取完整条目:

SELECT t.*
FROM your_table_name t
JOIN (
    SELECT DefaultMessage
    FROM your_table_name
    GROUP BY DefaultMessage
    HAVING COUNT(DISTINCT TravellerID) > 1
) dup_msg ON t.DefaultMessage = dup_msg.DefaultMessage
ORDER BY t.DefaultMessage, t.TravellerID;
  • COUNT(DISTINCT TravellerID)确保只筛选不同用户的重复消息,排除同一用户自身的重复条目
  • 分组统计的逻辑在大数据量下执行效率优于自连接

方法2:修正后的自连接

之前自连接返回全部数据是因为缺少关键过滤条件,添加条件后可精准定位目标数据:

SELECT DISTINCT t1.*
FROM your_table_name t1
JOIN your_table_name t2 
  ON t1.DefaultMessage = t2.DefaultMessage 
  AND t1.TravellerID != t2.TravellerID
ORDER BY t1.DefaultMessage, t1.TravellerID;
  • t1.TravellerID != t2.TravellerID确保只匹配不同用户的重复消息
  • DISTINCT避免同一行数据被重复输出(比如t1为ID1、t2为ID4,与t1为ID4、t2为ID1会产生重复结果)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 07:20:02