假设我有以下类似示例的内容:
作为说明,parentId 是对 NaiveTable 的 id 的引用(如果我错过了确切的语法)。
数据大致如下。
注意:我无法以任何方式修改数据库架构。 我只能创建SQL查询。 由于MySQL不支持它,我也不能使用
编辑:如果你喜欢实验,这里是SQL fiddle。
CREATE TABLE NaiveTable
{
id BIGINT NOT NULL,
parentId BIGINT NULL,
name VARCHAR(20) NULL,
CONSTRAINT hierarchy FOREIGN KEY (parentId) REFERENCES NaiveTable(id)
PRIMARY KEY (id)
}
作为说明,parentId 是对 NaiveTable 的 id 的引用(如果我错过了确切的语法)。
数据大致如下。
+---------+----------+----------+
| id | parentId | name |
+---------+----------+----------+
| 1 | null | node1 |
+---------+----------+----------+
| 2 | 1 | node2 |
+---------+----------+----------+
| 3 | 1 | node3 |
+---------+----------+----------+
| 4 | 2 | node4 |
+---------+----------+----------+
列名包含一些不相关的标签。我正在寻找一种在MySQL表上构建SQL查询的方法,其中所有信息都将被扁平化并按层次结构排序,如下所示:
node 1, depth 0
node 2, depth 1
node 4, depth 2
node 3, depth 1
注意:我无法以任何方式修改数据库架构。 我只能创建SQL查询。 由于MySQL不支持它,我也不能使用
WITH
关键字。 有没有办法制作这样的查询?
但是,对于深度为二或以上的任何解决方案都被视为足够好。编辑:如果你喜欢实验,这里是SQL fiddle。