<!--根据id查询子节点-->
<select id="sonId" parameterType="java.lang.String" resultType="com.tl.visual.model.SystemRelate">
SELECT class_id FROM (
SELECT t1.class_id,
IF(FIND_IN_SET(parent_id, @pids) > 0, @pids := CONCAT(@pids, ',', class_id), 0) AS ischild
FROM (
SELECT class_id,parent_id FROM 表名 t WHERE t.state = '01' ORDER BY parent_id, class_id
) t1,
(SELECT @pids := #{要查询的id}) t2
) t3 WHERE ischild != 0
</select>
SELECT * FROM (
SELECT t1.*,
IF(FIND_IN_SET(pid, @pids) > 0, @pids := CONCAT(@pids, ',', id), '0') AS ischild
FROM (
SELECT * FROM test2 AS t WHERE t.state = '01' ORDER BY t.id ASC
) t1,
(SELECT @pids := 'b1') t2
) t3 WHERE ischild != '0'
替换的地方:
test2 替换成你的表名
pid 替换成你的父id
id 替换成你的主键id
state 组织状态
b1 替换成你要查询的主键id
在实际开发中,我们经常需要根据一个
父节点
获取
所有的
子节点
,也就是所谓的递归.有的时候也需要根据
子节点
,
获取
它的
父节点
.
下面我介绍两种方式实现上面的需求:
用户自定义函数方式(Sql Server 2000+) 公用表表达式方式(Sql Server 2005+) Hierar
最近遇到了一个问题,在
mysql
中如何完成节点下的所有节点或节点上的所有
父节点
的
查询
?
在Oracle中我们知道有一个Hierarchical Queries可以通过CONNECT BY来
查询
,但是,在
MySQL
中还没有对应的函数!!!
下面给出一个function来完成的方法
下面是sql脚本,想要运行的直接赋值粘贴进
数据库
即可。
创建表treenod...
t1.
id
,
( FIND_IN_SET( parent_
id
, @p
id
s ) > 0 or FIND_IN_SET(
id
, @p
id
s ) > 0 , @p
id
s := CONCAT( @p
id
s, ‘,’,
id
), 0 ) AS ischild
( SELECT
id
, parent_
id
FROM iot_location t O
MySQL
高级一、
mysql
的架构介绍1、高级
MySQL
2、
Mysql
Linux 版的安装3、
Mysql
配置文件二、索引优化分析三、
查询
截取分析1、
查询
优化2、慢
查询
日志3、批量数据脚本4、Show Profile5、全局
查询
日志四、
MySQL
锁机制1、概述2、三锁2.1、表锁(偏读)2.2、行锁(偏写)2.3、页锁五、主从复制1、
一、
mysql
的架构介绍
1、高级
MySQL
mysql
内核
sql 优化工程师
mysql
服务器的优化
各种参数常量的设定
查询
语句优化
软硬件升级
select
id
from (
select t1.
id
,
if(find_in_set(parent_
id
, @p
id
s) > 0, @p
id
s := concat(@p
id
s, ',',
id
), 0) as ischild
from (
select
id
,parent_
id
from category t where order by parent_
id
,
id
) t1,
(select
(SELECT
`t1`.*, IF(FIND_IN_SET(`dept_parent_
id
`, @p
id
s) > 0, @p
id
s := CONCAT(@p
id
s, ',', `
id
`), 0) AS 'ischild'
(SELECT * FROM `sm_department` t ORDER BY `dept_parent_
id
`, `
id
`) t1,
(SELECT @p
id
s := 2) t2) t3
WHERE