我在mysql中有一个表,如下所述
rownum,value,status
1,16,1
2,32,1
3,16,1
4,23,0
5,33,0
6,16,0
7,22,0
8,13,1
9,43,1
10,32,1
11,45,0
12,28,0
13,23,0
14,28,0
15,31,1
16,13,1
17,44,1
这里第三列显示了我想添加一个新列的行基础的状态。所需的逻辑是,对于“status”列中的每一组重复值1,新列将获得一个分配给所有这些行的数字。当找到下一组1时,这个数字将以+1递增。输出表如下所示。
rownum,value,status,category
1,16,1,1
2,32,1,1
3,16,1,1
4,23,0,null
5,33,0,null
6,16,0,null
7,22,0,null
8,13,1,2
9,43,1,2
10,32,1,2
11,45,0,null
12,28,0,null
13,23,0,null
14,28,0,null
15,31,1,3
16,13,1,3
17,44,1,3
我对如何创建这个逻辑有点困惑,任何输入都会非常有用。谢谢!
1条答案
按热度按时间ygya80vv1#
您可以在mysql中使用用户定义的会话变量和条件函数(如
If()
. 我们将前一行的状态值存储在@stat
变量,并将其与当前行的状态值进行比较,以获得预期的结果。但是,如果只是为了显示,您应该认真考虑在应用程序代码中提交它。
不过,请尝试以下查询(db fiddle demo):