优秀的编程知识分享平台

网站首页 > 技术文章 正文

mysql根据子级id查找所有父级(mysql父子级查询)

nanyue 2024-10-27 11:27:53 技术文章 2 ℃

我的《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结果集中的每条筛选出来的(这是一个循环的过程)。

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

最近发表
标签列表