mysql-减去列值对应的行之间的值

问题描述 投票:0回答:2

我有一张桌子:

Number  |  Event  |  Weight
1            4          150
1            4          160
2            5          200
2            4          200
3            6          190
3            6          195

对于每一行,我想从它的Weight中减去另一行的Weight,其中NumberEvent匹配(如果存在)。所需的输出是:

Number  |  Event  |  Weight  | DIFF
1            4          150    -10
1            4          160     10
2            5          200    NULL
2            4          200    NULL
3            6          190     -5
3            6          195      5

这样的手术可能吗?不确定是否相关,最终我需要将此查询转换为view。提前致谢。

mysql sql subtraction
2个回答
1
投票

你需要一个左连接:

select 
  t.*,
  t.weight - tt.weight diff
from tablename t left join tablename tt
on tt.number = t.number and tt.event = t.event and tt.weight <> t.weight

1
投票

可以通过简单地减去连接表中的列来完成。当其中一个操作数为null时,算术运算的结果为null:

select a.Number, a.Event, a.Weight, a.Weight - b.Weight as DIFF
from a
left join b on a.Number = b.Number and a.Event = b.Event
© www.soinside.com 2019 - 2024. All rights reserved.