Heim >Datenbank >MySQL-Tutorial >MySQL查询Summary<无限级分类,递归检索或删除父类下的所_MySQL

MySQL查询Summary<无限级分类,递归检索或删除父类下的所_MySQL

WBOY
WBOYOriginal
2016-06-01 13:41:481134Durchsuche

bitsCN.com  一张无限级的分类表,简列主要表字段主键FID,父类ID字段FPID。 检索数据集的SQL语句 with a as(select FID from 表 where FID ='值'union allselect x.FID from 表 x,a where x.FPID =a.FID )select * from a删除数据集的SQL语句   with a as(select FID from 表 where FID ='值'union allselect x.FID from 表 x,a where x.FPID =a.FID )delete from 表 where FID in(select FID from a )
 1.其中x可以理解为类似a别名或者join关联语句里面的从表名  2.如果你像这样改写检索语句 with a as(select * from 表 where FID='值'union allselect a.* from ArticleType x,a where x.FPID=a.FID)select * from a 可能会出现"语句被终止。完成执行语句前已用完最大递归 100"报错。 解决办法如下:

在union两检索出来的数据集时它们字段的个数/类型要相同/对应。这是我的理解 with a as(select  字段1,字段2,字段3,字段4.. from 表 where FID='值'union allselect x.字段1,x.字段2,x.字段3,x.字段4..from 表 x,a where x.FPID=a.FID)select * from a   PS:之前看过一些前辈们的blog,我记得其中有一篇日志里面有这样的一句话:"分享别人是一点,但别人能给予你两点..."。我知道每个人的经验经历和技术能力都不一样,像我这样的菜鸟虽然毕业工作一年时间不到,还有很多的不足和需要学习的地方,但是岁月不饶人,平时工作实践中遇到的问题有机会和时间就写出来整理一下思绪,积累一点,是一点。  作者 wisonlee bitsCN.com

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn