mysql - 通过MYSQL查询减去值

标签 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”)。 我在这里需要做的是拥有“更改”列,针对每圈和每个用户进行更新,以反射(reflect)位置的变化。 所以我必须比较每圈和每个用户的每个位置,即它应该显示:

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

关于mysql - 通过MYSQL查询减去值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28369377/

相关文章:

python - 如何防止跨用户相关对象

mysql - SQL 查询从一个或 3 个表中选择

r - 减去不同大小的 data.frames 和 data.tables

r - R中同一数据框中的多列相减

python - 如何从 pandas python 中另一个数据帧的子集交集减去一个数据帧?

mysql - 使用 LIKE 和具有 "\"的值的搜索在 mysql 查询中不返回任何行

MySQL - FIND_IN_SET 、 GROUP_CONCAT 问题

mysql - 如何在两个以上的 MySQL 表上执行最佳的 FULL OUTER JOIN?

python - Pandas 数据帧的减法

Java 故障?减数?