父级 SQL 查询数量
我的数据库中有一个名为 type
的表,
ID Name ParentID
---------------------
1 name1 0
2 name2 0
3 name3 1
4 name4 2
5 name1 1
我需要知道每种类型有多少个父级(后代)
ID --------后代
ID-> 1 (have no parent)
ID-> 3 (have 1 parent (ID->1))
ID-> 5 (have two parent ((ID->3(ID->1))))
我如何编写优化的 sql 语句来执行此操作使用MySQL?
I have a table in my database called type
ID Name ParentID
---------------------
1 name1 0
2 name2 0
3 name3 1
4 name4 2
5 name1 1
I need to know how many parent (descendants) each type has
ID -------- descendants
ID-> 1 (have no parent)
ID-> 3 (have 1 parent (ID->1))
ID-> 5 (have two parent ((ID->3(ID->1))))
How can I write an optimized sql statement to do this using MySQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您也可以实现函数来计算级别
种类:
用途:
我不测试代码。
这种方法并不有效。在大多数情况下,建议在插入/更新时存储和计算级别更好。
Also you could implement function to compute level
Sort of:
Usage:
I do not test a code.
That approach is not effective. In most cases advice to store and compute level on insert/update is better.
遗憾的是,MySQL 不支持递归 CTE。但如果父级的数量有限,您可以使用连接来实现:
MySQL unfortunately doesn't support recursive CTE's. But if the number of parents is limited, you can implement this using joins: