如果我有一个包含以下列和值的表,按 parent_id
:
id parent_id line_no
-- --------- -------
1 2
2 2
3 2
4 3
5 4
6 4
我想填充 line_no
每次 parent_id
变化:
id parent_id line_no
-- --------- -------
1 2 1
2 2 2
3 2 3
4 3 1
5 4 1
6 4 2
查询或存储过程是什么样子的?
注意:我应该指出我只需要做一次。在我的php代码中有一个新函数,可以自动创建 line_no
每次添加新记录时。我只需要更新已经存在的记录。
3条答案
按热度按时间q1qsirdb1#
或者,更老派一点。。。
8gsdolmq2#
如果
row_number()
没有帮助:h9vpoimq3#
大多数mysql版本不支持
row_number()
. 所以,你可以用变量来实现。但你必须非常小心。mysql不保证select
,因此不应为变量分配在不同表达式中引用的。所以:
可能不需要对表进行排序的子查询。在版本5.7左右的地方,这在使用变量时是必要的。
编辑:
用变量更新很有趣。在这种情况下,我将只使用子查询和上面的: