gpt4 book ai didi

mysql - 如何使用基于列的增量值更新记录

转载 作者:行者123 更新时间:2023-11-28 23:44:32 25 4
gpt4 key购买 nike

我有表格 Pages

+--------------------------------+
| Pages |
+--------------------------------+
| Name | Id | ParentId | Ordinal |
|--------------------------------|
| A | 1 | NULL | 0 |
|--------------------------------|
| B | 2 | 1 | 0 |
|--------------------------------|
| C | 3 | 1 | 0 |
|--------------------------------|
| D | 4 | 1 | 0 |
|--------------------------------|
| E | 5 | 2 | 0 |
|--------------------------------|
| F | 6 | 2 | 0 |
|--------------------------------|
| G | 7 | 3 | 0 |
|--------------------------------|
| H | 8 | 3 | 0 |
|--------------------------------|
| I | 9 | 3 | 0 |
+--------------------------------+

我想用 SQL 更新表,所以我得到了

+--------------------------------+
| Pages |
+--------------------------------+
| Name | Id | ParentId | Ordinal |
|--------------------------------|
| A | 1 | NULL | 0 |
|--------------------------------|
| B | 2 | 1 | 0 |
|--------------------------------|
| C | 3 | 1 | 1 |
|--------------------------------|
| D | 4 | 1 | 2 |
|--------------------------------|
| E | 5 | 2 | 0 |
|--------------------------------|
| F | 6 | 2 | 1 |
|--------------------------------|
| G | 7 | 3 | 0 |
|--------------------------------|
| H | 8 | 3 | 1 |
|--------------------------------|
| I | 9 | 3 | 2 |
+--------------------------------+

Ordinal 必须是增量值,从 0 开始。它应该在每次 ParentId 列更改时重新开始。

最佳答案

一个简化的答案。

示例输出:enter image description here这是 SQLFiddle Demo

SELECT Name,Id,ParentId,Ordinal
FROM
(SELECT `Name`,
`Id`,
`ParentId`,
(@category_num :=IF(ParentId = @ParentId,@category_num+1,0)) AS Ordinal,
@ParentId:= `ParentId` AS Temp_swap

FROM Pages)T

希望这对您有所帮助。

关于mysql - 如何使用基于列的增量值更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33826187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com