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

如何通过SELECT语句合并表中信息相同但列位不同的两行?

问题:合并列位置互换的重复行

假设存在如下结构与数据的表:

FK | Field1 | Field2
=====================
3  | ABC    | DEF
3  | DEF    | ABC

现需将这两行信息相同但列位置不同的数据合并为一行,能否通过SELECT查询语句得到如下结果?

FK | Field1 | Field2
=====================
3  | ABC    | DEF

可以实现,以下是两种常用方案:

方案1:利用聚合函数统一字段顺序

通过LEAST()(取最小值)和GREATEST()(取最大值)函数固定Field1和Field2的顺序,再按FK分组去重,适配大多数SQL数据库:

SELECT 
    FK,
    LEAST(Field1, Field2) AS Field1,
    GREATEST(Field1, Field2) AS Field2
FROM your_table
GROUP BY FK;

注:Oracle等部分数据库可直接用MIN(Field1, Field2)和MAX(Field1, Field2)替代上述函数。

方案2:自连接过滤重复行

通过自连接匹配列互换的行,只保留Field1小于等于Field2的记录,同时用DISTINCT确保唯一性:

SELECT DISTINCT
    t1.FK,
    t1.Field1,
    t1.Field2
FROM your_table t1
LEFT JOIN your_table t2 
    ON t1.FK = t2.FK 
    AND t1.Field1 = t2.Field2 
    AND t1.Field2 = t2.Field1
WHERE t1.Field1 <= t1.Field2;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:28:08