快速问题,我现在无法思考:
我有一个表,名为“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/