玖叶教程网

前端编程开发入门

mysql根据子级id查找所有父级(mysql根据子节点找出所有父节点)

我的《mysql查询指定父级下所有子级》这篇文章介绍和使用自连接加变量来查找指定父级下所有子级,那么这篇文章来说说“根据子级id查找所有父级”。

下边是sql代码

SELECT T2.PRODUCT_ID,T2.PRODUCT_NAME, T2.LEVEL
FROM (
SELECT
@r _id,
(SELECT @r := PID FROM PRODUCT WHERE PRODUCT_ID = _id) parent_id,
@l := @l + 1 AS lvl -- lvl可以理解为增量
FROM
(SELECT @r := 2643, @l := 0) vars,
PRODUCT t
WHERE @r <> 0) T1
JOIN PRODUCT T2
ON T1._id = T2.PRODUCT_ID
ORDER BY T1.lvl DESC

结果:

修改表名称直接就可以使用了。

注释:

PRODUCT:表名
PRODUCT_ID:PRODUCT表的主键
PID:PRODUCT表中每条数据对应的父级id
2643 :指定子级id
mysql中使用 @+字符串 用来定义变量 如: @t @t就成了一个变量
:= 在mysql中的作用是为变量赋值 如: @t:=7 意思是将7赋值给 @t
<> 是不等号的意思

根据:mysql不加索引,那么不管加不加where条件都会进行全表扫描。select * from a,b 相当于inner join不加where条件,展示的是笛卡尔积结果,假入a表有3条,b表有5条,那么结果有3*5=15条。如果加了where条件,那么展示的就是符合条件的结果。select后边要显示的结果是在from结果集中的每条筛选出来的(这是一个循环的过程)。

你的赞和关注是对我最大的肯定,希望大家多多支持,谢谢大家。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言