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
之外,这在任何数据库中都是可行的。