mysql 如何用每个id的序列号更新列?

v09wglhw  于 2023-01-20  发布在  Mysql
关注(0)|答案(1)|浏览(139)

为了形象化这个问题,假设我有这样一张表:
| 图书标识|正在运行的预订编号|
| - ------|- ------|
| 布卡||
| 布卡||
| 布卡||
| 图书||
| 图书||
刚刚添加了book_running_no列。
我想更新这个表,为每个book_id设置一个序列号book_running_no列,结果如下:
| 图书标识|正在运行的预订编号|
| - ------|- ------|
| 布卡|书籍A01|
| 布卡|书籍A02|
| 布卡|书A03|
| 图书|书籍b01|
| 图书|书籍b02|
帐簿运行编号=帐簿ID +2位运行编号
我找到了运行编号解决方案here,但现在需要为每个book_id定制编号生成。
提前感谢您的协助。

tf7tbtn2

tf7tbtn21#

UPDATE test t1
SET book_running_no = CONCAT( book_id,
                              LPAD(CASE WHEN book_id = @id
                                        THEN @num := @num + 1
                                        ELSE @num := 1 
                                        END, 2, 0), 
                              LEFT((@id := book_id), 0)
                              )
ORDER BY book_id;

fiddle

相关问题