通过MYSQL查询减去值

时间:2015-02-06 15:41:29

标签: mysql subtraction

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

我有一张名为“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”)取决于一些微积分。 我需要做的是拥有“更改”列,更新每一圈和每个用户以反映位置的变化。 所以我必须比较每一圈和每个用户的每个位置,即它应该显示:

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圈是它应该显示位置变化的地方。

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

1 个答案:

答案 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