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

编写SQL语句实现反向记录的ID求和需求

SQL查询:对col1与col2互为反向的记录ID求和

需求

编写SQL查询,当my_table中存在col1与col2互为反向的记录时,对这些记录的ID求和。

原表数据

idcol1col2
1ab
2ba
3ba
4cd
5dc
6xy

预期输出

idcol1col2
6ab
9cd
6xy

逻辑说明

只要存在col1和col2互为反向的记录(即一条记录的col1等于另一条的col2,且col2等于另一条的col1),就将所有这类记录的ID相加;无反向记录的条目,直接保留其ID。

正确SQL语句

原参考SQL使用REVERSE()函数的逻辑有误(该函数用于字符串反转,而非列值互换匹配),且无法处理多条反向记录的求和,以下是能得到预期结果的查询:

SELECT 
    SUM(id) AS id,
    -- 统一显示顺序为较小值在前,匹配预期输出格式
    LEAST(col1, col2) AS col1,
    GREATEST(col1, col2) AS col2
FROM my_table
GROUP BY LEAST(col1, col2), GREATEST(col1, col2)
ORDER BY id;

原参考SQL问题说明

原参考SQL仅能两两匹配ID较小和较大的记录,无法将所有互为反向的记录归为一组求和(比如id=1、2、3的a-b/b-a记录,原查询会生成多条部分求和结果,而非总和6),且REVERSE()函数在此场景下属于误用,正确的分组方式是通过LEAST()和GREATEST()将互为反向的记录归为同一组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:43:07