MySQL根据日期添加计数字段

时间:2015-11-05 12:25:17

标签: mysql sql-order-by

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。

任何人都可以使用一些代码来获得我想要的结果吗?

1 个答案:

答案 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, datenum, date订购。