我已经尝试了一些程序和循环,但是我很难得到我的结果。
我有一张19000条记录的表格,看起来像这样:
id | seq | custom_id
1 | 0 | 123
2 | 0 | 124
3 | 1 | NULL
4 | 0 | 125
5 | 1 | NULL
6 | 2 | NULL
7 | 3 | NULL
我的目标是:
id | seq | custom_id
1 | 0 | 123
2 | 0 | 124
3 | 1 | 124-1
4 | 0 | 125
5 | 1 | 125-1
6 | 2 | 125-2
7 | 3 | 125-3
因此,如果seq为0,它将有一个自定义id。如果seq不是0,我想得到自定义id和concat-seq的结尾。
1条答案
按热度按时间2wnc66cl1#
在相关子查询中,我们可以得到前一个(和最近的)
custom_id
值的位置seq
是0。现在,我们只需要使用
Concat()
函数来连接上一个custom_id
值与当前行的seq
价值,得到新的custom_id
.尝试以下查询以选择数据(db fiddle demo):
不过,根据您的评论,您似乎有兴趣更新
custom_id
立即打开列。在mysql中,通过派生表方法,可以在同一个表上使用子查询(该表也正在更新)。我们确定修改的
custom_id
为了id
哪里seq <> 0
在子表中选择结果集(派生表),然后将其联接回主表进行更新。尝试以下更新数据(db fiddle demo):