我在phpmyadmin中有一个名为categories的表,包含列ID,ParentID,Name,NestLevel。
目前我已经填充了Nest级别的所有内容。我想找出树中每个类别的级别。
所以经过一些谷歌搜索后,我发现了以下article:
但是,这是针对sql server而不是mysql。有问题的摘录如下:
-- Step #1: Add [Level] Column to the Table
ALTER TABLE [dbo].[Hierarchy] ADD [Level] INT NULL
GO
-- Step #2: Set Level = 1 For Rows With No Parents
UPDATE [dbo].[Hierarchy]
SET [Level] = 1
WHERE [ParentID] IS NULL
GO
-- Step #3: Set the Level of all Remaining Rows
WHILE (SELECT COUNT(*) FROM [dbo].[Hierarchy] WHERE [Level] IS NULL) > 0
BEGIN
UPDATE A
SET [Level] = B.[Level] + 1
FROM [dbo].[Hierarchy] A INNER JOIN [dbo].[Hierarchy] B
ON A.[ParentID] = B.[ID]
WHERE A.[Level] IS NULL AND
B.[Level] IS NOT NULL
END
GO
所以,首先我删除了所有[]以及GO,END,BEGIN的所有实例,并用categories
替换了[dbo]。[hierarchy]的所有实例。
现在,步骤1和2完美运行。但是,第3步是给我错误并且不知道为什么的那个。
我最终也将通过PHP脚本调用这一切(如果这对答案有任何不同):
$sql = "query";
database_queryModify($sql,$result);
任何人都知道这个问题吗?
由于 约翰
编辑:我得到的错误是:
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
'WHILE SELECT COUNT(*) FROM categories WHERE Level IS NULL > 0 UPDATE A '
at line 1