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

如何获取聊天表中基于反向匹配ID的唯一列对?

问题描述

原始聊天记录表:

sender_idreceiver_id
12
12
21

需求:将(sender_id, receiver_id)和(receiver_id, sender_id)视为同一对话组合,获取去重后的唯一列表,最终期望结果:

sender_idreceiver_id
12
解决方案

以下是两种通用的SQL实现方式:

方法一:使用LEAST和GREATEST函数(适配MySQL、PostgreSQL等主流数据库)

SELECT DISTINCT
    LEAST(sender_id, receiver_id) AS sender_id,
    GREATEST(sender_id, receiver_id) AS receiver_id
FROM
    chat_table;

方法二:使用CASE语句(兼容更多数据库类型)

SELECT DISTINCT
    CASE WHEN sender_id < receiver_id THEN sender_id ELSE receiver_id END AS sender_id,
    CASE WHEN sender_id < receiver_id THEN receiver_id ELSE sender_id END AS receiver_id
FROM
    chat_table;

逻辑说明

  • 通过LEAST/CASE将两个ID按大小排序,把(1,2)和(2,1)统一转换为(1,2)格式
  • DISTINCT关键字用于去除重复的组合,确保最终结果唯一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:20:33