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

如何在whatsapp_messages表中识别唯一对话(双向视为同一对话)

解决思路与代码实现

要识别唯一对话,核心是把双向的对话(比如1→2和2→1)标准化为同一个标识。具体可以通过将每个对话的两个用户ID按大小排序,生成统一的对话键,之后去重即可。

步骤说明

  • 先过滤掉自己给自己发消息的记录(如果不需要这类对话可省略)
  • 对每条记录的sender_id和receiver_id,生成标准化字段:user_a取较小的ID,user_b取较大的ID
  • 对标准化后的字段去重,得到所有唯一对话

修正后的代码

WITH standardized_convos AS (
    SELECT
        -- 生成标准化的对话双方:小ID在前,大ID在后
        LEAST(sender_id, receiver_id) AS user_a,
        GREATEST(sender_id, receiver_id) AS user_b
    FROM whatsapp_messages
    -- 排除自己给自己发消息的情况(不需要可删除此行)
    WHERE sender_id != receiver_id
)
-- 去重得到唯一对话
SELECT DISTINCT user_a, user_b
FROM standardized_convos;

拓展:统计对话消息数量

如果需要统计每个对话的消息总数,可以在CTE中加入计数逻辑后分组:

WITH standardized_convos AS (
    SELECT
        LEAST(sender_id, receiver_id) AS user_a,
        GREATEST(sender_id, receiver_id) AS user_b,
        COUNT(*) AS message_count
    FROM whatsapp_messages
    WHERE sender_id != receiver_id
    GROUP BY user_a, user_b
)
SELECT user_a, user_b, message_count
FROM standardized_convos;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:54:52