一个简单的问题,我现在无法理解:
我有一个表,称为“肝脏”,如下表(节选):
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
基本上,我列出了几圈作为竞赛圈,其中每个用户(具有其自己的唯一“ 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圈应显示位置变化。
我一直在尝试一些选择,但没有任何效果。提前致谢 !
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句