id num date Attempt
1 555 2015-01-03 01:00:00 1
1 555 2015-01-03 02:00:00 2
1 555 2015-01-03 03:00:00 3
1 555 2015-01-01 04:03:03 4
1 555 2015-01-02 06:00:00 5
1 555 2015-01-06 17:55:24 6
1 555 2015-01-07 18:00:00 7
2 666 2015-01-07 01:00:00 1
2 666 2015-01-07 02:00:00 2
嗨,我有上面的表格布局,但“尝试”字段是空白的。
我正在尝试根据ID,日期更新尝试字段。
我用过这个
SET @x = 0;
UPDATE attempts
SET attempt = (@x:=@x+1) ORDER BY id, date
问题是我还需要添加group by子句,以便它接收新的id并再次从1重新开始增量,因为编号只是继续到下一个id,所以我的结果目前看起来像:
id num date Attempt
1 555 2015-01-03 01:00:00 1
1 555 2015-01-03 02:00:00 2
1 555 2015-01-03 03:00:00 3
1 555 2015-01-01 04:03:03 4
1 555 2015-01-02 06:00:00 5
1 555 2015-01-06 17:55:24 6
1 555 2015-01-07 18:00:00 7
2 666 2015-01-07 01:00:00 8
2 666 2015-01-07 02:00:00 9
所以8&由于新的ID,9应分别为1和2。
任何人都可以使用一些代码来获得我想要的结果吗?
答案 0 :(得分:2)
这是一种方法:
SET @x = 0;
SET @num = -1;
UPDATE attempts
SET attempt = if(@num = num, @x := @x+1,
if(@num := num, @x := 1, @x := 1)
)
ORDER BY id, date;
要明确是否要按id, date
或num, date
订购。