作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自引用表“comments”,其中 comments.replyToId REFERENCES comments.ID。
我的问题是,如何使用自引用表查询数据库以获得正确排序的结果,以便我可以在 PHP 中将结果表示为树?
我试过了
select * from comments as comments_1
left join comments as comments_2
on comments_1.id = comments_2.replyToId
我正在尝试在 php 中使用它的结果
最佳答案
您不会直接从 MySQL 中获得递归结果。最近有一个类似的讨论 - 某些 RDBMS 使用存储过程等可能是可能的,但使用现成的 SQL 则不行(参见 How can I get ancestor ids for arbitrary recursion depth in one SQL query?)。
我在类似情况下的做法是:获取所有没有 parent 的评论。然后,对于每个评论,获取其子项(如果您存储每个评论的“深度”,您可能会通过一个 SQL 查询获得所有这些子项和下一层的所有子项)。将 child 存储在树结构中的适当位置,重复。
如果您需要更底层的,您通常需要共享一些代码,解释您的数据结构,到目前为止您尝试了什么等等,这只是一般方法。
关于php - 如何通过查询mysql中的自引用表来获得递归结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056878/
我是一名优秀的程序员,十分优秀!