代码之家  ›  专栏  ›  技术社区  ›  machump

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

  •  0
  • machump  · 技术社区  · 7 年前

    我有一张桌子像:

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

    对于每一行,我想从它的 Weight , the 重量 在另一排 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 . 提前谢谢。

    2 回复  |  直到 7 年前
        1
  •  1
  •   forpas    7 年前

    您需要左连接:

    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
    
        2
  •  1
  •   jspcal    7 年前

    只需在联接表中减去列即可。当其中一个操作数为空时,算术运算的结果为空:

    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