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
由于新的 ID,8 和 9 应该分别为 1 和 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
订购。
关于MySQL添加基于日期的计数字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544492/