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

如何用SQL实现两个SELECT查询结果的数值相减?

解决两表分数差值计算问题

你用MINUS没效果是因为它是集合运算符,作用是返回第一个查询有但第二个查询没有的记录,根本不是用来做数值减法的,完全不符合你的需求。

正确的做法是通过Name字段把两个表关联起来,然后逐个计算分数列的差值,SQL代码如下:

SELECT 
    CONCAT('Diff', ROW_NUMBER() OVER (ORDER BY t1.Name)) AS Name,
    t2.Score1 - t1.Score1 AS Score1,
    t2.Score2 - t1.Score2 AS Score2,
    t2.Score3 - t1.Score3 AS Score3,
    t2.Score4 - t1.Score4 AS Score4
FROM table1 t1
INNER JOIN table2 t2 ON t1.Name = t2.Name
ORDER BY t1.Name;

代码说明:

  • INNER JOIN:通过Name匹配两个表的记录,确保每个用户的分数都能对应上
  • 分数差值计算:这里用table2的分数减去table1的分数,和你示例中Ryan、John的结果一致;如果需要table1减table2或者取差值的绝对值,直接调整表达式即可(比如用ABS(t2.Score1 - t1.Score1)得到绝对值)
  • CONCAT('Diff', ROW_NUMBER()...):生成你需要的Diff1/Diff2/Diff3格式的名称,按Name排序保证顺序和示例一致
  • ORDER BY:确保最终结果的顺序和你期望的一致

执行这段代码后,得到的结果会和你给出的预期输出基本匹配(如果需要Mark的Score1显示7而不是-7,把对应的表达式改成ABS(t2.Score1 - t1.Score1)即可)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:25:33