Mysql 如何在SQL数据库中创建层次结构?

Mysql 如何在SQL数据库中创建层次结构?,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个包含以下列的表: 我需要根据级别数量和层次结构创建更多列 例如: Level 1 Architecture ->Level 2 ->Asses Inventory ->level 3 ->Program 如果最多有三个级别,我需要创建三个列。我在PowerBI中实现了这一点 如何在SQL中实现同样的功能? 感谢您的帮助。谢谢您可以使用类型。它附带了许多方法来处理层次结构本

我有一个包含以下列的表:

我需要根据级别数量和层次结构创建更多列

例如:

Level 1
Architecture ->Level 2
             ->Asses Inventory ->level 3
                              ->Program

如果最多有三个级别,我需要创建三个列。我在PowerBI中实现了这一点

如何在SQL中实现同样的功能? 感谢您的帮助。谢谢

您可以使用类型。它附带了许多方法来处理层次结构本身,如:

  • 获得祖先
  • 获得后代
  • GetLevel
  • IsDescendatof
在您的示例中,您将看到如下内容:

ID      Name
/1/     Architecture
/1/1/   Asses Invenctory
/1/2/   Process2
/2/     Assset Management 

在T-SQL中,我只是多次将表连接到它自己

创建一个新表,如您所需:

   INSERT INTO NEW_TABLE
(LEVEL1, LEVEL2, LEVEL3)
SELECT
a.name,
b.name,
c.name
FROM TABLE1 a
LEFT OUTER JOIN TABLE1 b
ON a.category_id = b.parent_id
LEFT OUTER JOIN TABLE1 c
on b.category_id = c.parent_id
GO

我想这应该可以满足您的要求。

您为什么同时标记MySQL和SQL Server?您尝试了什么?你在哪里卡住了?向我们展示您的尝试。
ParentId
如果没有更高级别,则应为
null
。有多种方法可以解决此问题。选择哪一个在很大程度上取决于您使用的DBMS和树的性质(如果很少更改,但经常遍历,或者反过来,您希望如何遍历树,树有多少条目,子项的排序,…)如果没有这些信息,就不可能给出有意义的答案。除了多余的
GO
之外,这在任何数据库中都是可行的。