通过 MYSQL 查询减去值

Subtracting values via MYSQL query

快速提问我现在无法理解:

我有一个table,叫"liverace",如下(节选):

racelap,pos,change,userid
1        1    0      21
1        2    0      12     
1        3    0      18
2        1    0      18
2        2    0      21
2        3    0      12

基本上,我有几圈被列为 racelap,每个用户(有自己独特的 "userid")根据一些微积分获得分配的位置("pos")。 我在这里需要做的是让 "change" 列在每一圈和每个用户中更新以反映位置的变化。 所以我必须比较每一圈和每个用户的每个位置,即它应该显示:

racelap,pos,change,userid
1        1    -      21
1        2    -      12
1        3    -      18
2        1    +2     18
2        2    -1     21
2        3    -1     12

第一圈没有变化,因为第 0 圈不存在。第 2 圈应该显示位置的变化。

我一直在尝试一些选择,但没有任何效果。 提前致谢!

SELECT 
  so1.`lap`,
  so1.`pos`,
  COALESCE(so2.pos - so1.pos, "-") as `change`,
  so1.user_id 
FROM
  so so1 
  LEFT JOIN so so2 
    ON so2.lap = (so1.`lap` - 1) 
    AND so2.`user_id` = so1.`user_id` 

按预期工作。

   lap     pos  change  user_id  
------  ------  ------  ---------
     1       1  -              21
     1       2  -              12
     1       3  -              18
     2       1  2              18
     2       2  -1             21
     2       3  -1             12

假设如下

CREATE TABLE `so` (
  `lap` int(11) DEFAULT NULL,
  `pos` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL
) ENGINE=InnoDB