mysql- 减去列值对应的行之间的值
mysql- subtract values between rows where column values correspond
我有一个 table 像:
Number | Event | Weight
1 4 150
1 4 160
2 5 200
2 4 200
3 6 190
3 6 195
对于每一行,我想从其 Weight
中减去另一行的 Weight
,其中 Number
和 Event
匹配(如果存在)。期望的输出是:
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
。提前致谢。
可以通过简单地减去连接的列 table 来完成。当其中一个操作数为空时,算术运算结果为空:
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
您需要一个左连接:
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
我有一个 table 像:
Number | Event | Weight
1 4 150
1 4 160
2 5 200
2 4 200
3 6 190
3 6 195
对于每一行,我想从其 Weight
中减去另一行的 Weight
,其中 Number
和 Event
匹配(如果存在)。期望的输出是:
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
。提前致谢。
可以通过简单地减去连接的列 table 来完成。当其中一个操作数为空时,算术运算结果为空:
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
您需要一个左连接:
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