将SQL查询转换为MySQL。类别巢级别

时间:2013-10-02 12:12:06

标签: php mysql sql

我在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

0 个答案:

没有答案