mysql8的递归sql语句

139 阅读1分钟

1-sql中的递归语句

# 新建表格
CREATE  TABLE aaa
(
    id INT,
    pid INT,
    name NVARCHAR(10)
)

#插入数据
INSERT INTO aaa VALUES(1,0,'a')
INSERT INTO aaa VALUES(2,0,'b')
INSERT INTO aaa VALUES(3,1,'c')
INSERT INTO aaa VALUES(4,1,'d')
INSERT INTO aaa VALUES(5,2,'e')
INSERT INTO aaa VALUES(6,3,'f')
INSERT INTO aaa VALUES(7,3,'g')
INSERT INTO aaa VALUES(9,8,'h')
INSERT INTO aaa VALUES(10,8,'h')
INSERT INTO aaa VALUES(11,8,'h')

# 确定数据是否插入
select * from aaa
# 递归
with RECURSIVE t as
(
	select *, 1 as dep from aaa   where id = 1
	union all
	select a2.*,t.dep + 1 as dep   from aaa a2 join t on a2.pid = t.id 
) select * from t
  • 注意:sql中的递归语句 只有在mysql8的环境下才能运行,在mysql5.7下会报错