首页 >

mysql查找二叉树 |java mysqlconnection

mysql扩容教程,mysql 金额大写转换,mysql 怎么按索引查询,mysql使用命令执行,mysql默认空字符,java mysqlconnectionmysql查找二叉树 |java mysqlconnection

首先,大家需要了解二叉树的基本结构。二叉树由根节点、左子树、右子树组成,每个节点最多只有两个子节点,且左子树中所有节点的权值都小于根节点,右子树中所有节点的权值都大于根节点。

CREATE TABLE `tree` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

大家使用MySQL创建了一个名为`tree`的表,其中`id`表示节点的编号,`parent_id`表示父节点的编号,`value`表示节点的权值。

如果大家想要查询某个节点的子树,可以使用下面的SQL语句:

WITH RECURSIVE tree_path (id, parent_id, value, path) AS (
SELECT id, parent_id, value, CAST(id AS CHAR)
FROM tree
WHERE id = ?
UNION ALL
SELECT t.id, t.parent_id, t.value, CONCAT(tp.path, ',', t.id)
FROM tree t
JOIN tree_path tp ON tp.id = t.parent_id
)
SELECT * 
FROM tree_path tp
WHERE FIND_IN_SET(? ,tp.path) >0;

以上SQL语句使用了递归查询,以某个节点的`id`作为起点,递归查找该节点的所有子节点,最终得到一棵子树。其中`?`代表需要查询的节点的`id`。查询结果会返回该节点及其所有子节点的`id`、`parent_id`、`value`和节点路径。

如果大家想查询某个节点的祖先节点,可以使用下面的SQL语句:

WITH RECURSIVE tree_path (id, parent_id, value, path) AS (
SELECT id, parent_id, value, CAST(id AS CHAR)
FROM tree
WHERE id = ?
UNION ALL
SELECT t.id, t.parent_id, t.value, CONCAT(t.id, ',', tp.path)
FROM tree t
JOIN tree_path tp ON tp.parent_id = t.id
)
SELECT * 
FROM tree_path tp
WHERE FIND_IN_SET(? ,tp.path) >0;

以上SQL语句同样使用了递归查询,以某个节点的`id`作为起点,递归查找该节点的所有祖先节点,最终得到该节点的祖先节点。查询结果会返回该节点及其所有祖先节点的`id`、`parent_id`、`value`和节点路径。

综上,大家可以用MySQL来方便地查询二叉树,让大家的数据处理更加高效。


mysql查找二叉树 |java mysqlconnection
  • mysql大数据分表技术解放你的数据存储烦恼 |mysql查询表结构sql
  • mysql大数据分表技术解放你的数据存储烦恼 |mysql查询表结构sql | mysql大数据分表技术解放你的数据存储烦恼 |mysql查询表结构sql ...

    mysql查找二叉树 |java mysqlconnection
  • c 连接mysql数据库失败 |mysql sql 去除换行
  • c 连接mysql数据库失败 |mysql sql 去除换行 | c 连接mysql数据库失败 |mysql sql 去除换行 ...

    mysql查找二叉树 |java mysqlconnection
  • mysql视图转换成表(详解视图转换为表的方法和步骤) |mysql查询字段为空
  • mysql视图转换成表(详解视图转换为表的方法和步骤) |mysql查询字段为空 | mysql视图转换成表(详解视图转换为表的方法和步骤) |mysql查询字段为空 ...