我有一个表categories
,其中包含列 ID 和 ParentID 我想添加一个名为 Level 的字段,它说明每个类别在类别树中的哪个级别。我想我找到了我的解决方案,但它在 sql 而不是 mysql 中。所以我一直在将它转换为正确的语法。但是,我认为我错过了一步。所以,这是我的代码:
ALTER TABLE categories DROP Level;
ALTER TABLE categories ADD Level INT NULL;
UPDATE categories
SET Level = 0
WHERE ParentID IS NULL;
UPDATE categories AS A
INNER JOIN categories B ON A.ParentID = B.ID
SET A.Level = B.Level + 1
WHERE A.Level IS NULL AND
B.Level IS NOT NULL;
我认为问题可能在于,在我的数据库中,类别的顺序没有任何特定的顺序,我的意思如下:
ID ParentID
2 NULL 0
4 55
7 2
.....more categories
55 2
所以我想做的是:
ID Parent Level
2 NULL 0
3 55 2
7 2 1
....
55 2 1
但是,我认为,但我可能错了,是我需要先按 ParentID 排序,然后再进行最后一次操作,否则我的查询格式错误。
但是,我没有收到任何错误,只是没有得到我期望的结果,这就是我得到的;
ID Parent Level
2 NULL 0
3 55 NULL
7 2 1
....
55 2 1
有任何想法吗?