【问题标题】:Subtracting values via MYSQL query通过 MYSQL 查询减去值
【发布时间】:2015-02-06 15:41:29
【问题描述】:

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

我有一个表,叫“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,其中每个用户(具有自己唯一的“用户ID”)根据一些微积分获得分配的位置(“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 圈应该显示位置变化。

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

【问题讨论】:

  • 这种事情在mysql中很难/丑陋。你最好在客户端进行计算。
  • @Farhang Amary 这是一个表示我不明白该怎么做的表达

标签: mysql subtraction


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 2017-08-29
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    相关资源
    最近更新 更多