更新,设置相对于行子集

时间:2016-09-29 08:57:17

标签: mysql

我正在向表中添加新列position。此列应在具有相同userId的所有行中保存唯一值。如果按照id,创建或随机排序它们并不重要。例如:

id  userId  time    subn    position    created
1   1       33      FG      1           2016-08-13
2   1       57      FG      2           2016-08-15
3   1       20      XM      3           2016-08-11
4   2       81      FG      1           2016-08-01
5   3       12      FG      1           2016-08-27
6   3       33      FG      2           2016-08-18

我该怎么做?我已经尝试创建一个副本表(这样MySQL就不会抱怨目标表的目标表是从中指定的更新),将初始值设置为0并运行它:

UPDATE userTimes_copy uic 
    SET position = (SELECT 1 + MAX(uic2.position) 
                    FROM userTimes uic2 
                    WHERE uic.userId = uic2.userId);

但它不起作用。前两行具有相同的userId,得到486(我有485行),其余所有1。

0 个答案:

没有答案