gpt4 book ai didi

php - 在 mySQL 中从所有父项中选择所有子项

转载 作者:可可西里 更新时间:2023-11-01 07:08:32 25 4
gpt4 key购买 nike

我有一个像这样的简单表格:

+------------+---------+-----------+--------------+
| comment_id | post_id | parent_id | comment_text |
+------------+---------+-----------+--------------+
| 1 | 200 | 0 | a |
| 2 | 200 | 0 | b |
| 3 | 200 | 1 | c |
| 4 | 200 | 1 | d |
| 5 | 200 | 0 | e |
| 6 | 200 | 2 | f |
| 7 | 200 | 2 | g |
| 8 | 200 | 0 | h |
| 9 | 200 | 0 | i |
| 10 | 200 | 1 | k |
+------------+---------+-----------+--------------+
  • parent_id 列告诉我们此评论是对具有此 ID 的另一条评论的回复。

  • 假设只有一层评论嵌套。

现在我需要返回仅前 5 个 父评论以及属于它们的所有子评论。

我有一个查询,但有一个问题。

    (
SELECT c.*
FROM comments AS c
WHERE c.post_id = '200' AND parent_id='0'
LIMIT 0,5
)
UNION
(
SELECT c.*
FROM comments AS c
WHERE c.post_id = '200' AND c.parent_id IN
(
SELECT c.comment_id
FROM comments AS c
WHERE c.post_id= '200' AND parent_id='0'
LIMIT 0,5
)
)

问题是我当前的 mySQL 版本不支持子查询中的 LIMIT。另外,我似乎执行了两次相同的 SELECT 查询!

我相信一定有一种方法可以更优雅地做到这一点。

最佳答案

这是最优雅的方式:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ .您将遇到的一个问题是插入需要一些时间,因为其他行需要更新;然而,这可以通过一些创意来避免。那篇文章是一个很好的开始。

关于php - 在 mySQL 中从所有父项中选择所有子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3153539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com