这个博客讨论了一种使用WITH语句在SQL中进行递归查询的方法,以获取某个父类目下所有子类目的完整列表。通过自定义结果名称并结合UNION ALL操作,可以有效地遍历层级结构,展示Id、Name和Pid字段,其中Id是主键,Name是类目名称,Pid表示父类主键。
摘要由CSDN通过智能技术生成
SELECT * FROM table_name WHERE Id=‘4’ --表的主键ID
UNION ALL
SELECT T0.* FROM TEMP,table_name T0 WHERE TEMP.Id=T0.ParentId --
子级
ID==
父级
ID
SELECT * FROM TEMP;
–根据
指定
节点ID获取所有父节点–
WITH TEMP AS
SELECT * FROM table_name WHERE Id=‘3
格式:SELECT ... FROM + 表名 WHERE + 条件3 START WITH + 条件1 CONNECT BY PRIOR + 条件2
条件1: 表示从哪个节点开始查找, 也就是通过条件1
查询
到的数据, 作为后续
查询
的起始节点(参数).
条件2: 是连接条件,其中用PRIOR表示上一条记录,例如CONNECT BY PRIOR ID = PID,意思就是上一条记录的ID是本条记录...
-->Date :2009-09-30 08:52:38
set nocount on
if object_id('tb','U')is not null drop table tb
create table tb(ID int, ParentID int)...
下面展示一些 内联代码片。
select * from T_SYS_DIC
start with dic_id = '1000076' CONNECT BY PRIOR dic_id = parent_dic_id
对应结果:可以看出所有数据均为父 id为 1000
t1.*,
t2.*,
IF(FIND_IN_SET(parent_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), '0') AS isChild
FROM (
SELECT * FROM rule_enti