我正在使用 MySQL Server 5.x,并且我有一个存储站点帖子数据的帖子表。有时帖子可以是父帖子的子帖子,在这种情况下,表格记录了帖子父的 ID 号。
该表有一个 ID 字段( bigint )、一个 post_parent 字段(也是 bigint )、一个标题和内容。
示例数据可能如下所示
ID post_parent title content
----------------------------------------------
1 test testing post content
2 test2 more test content
3 1 test3 post 1 is my parent
4 2 test4 post 2 is my parent
5 tes5 test content post 5
6 2 test6 post 2 is my parent
因此,我想查询表中的 X 条记录,并按帖子 ID 对结果进行排序,该帖子的子级与父级分组,结果如下所示:
ID post_parent title content
----------------------------------------------
1 test testing post content
3 1 test3 page 1 is my parent
2 test2 more test content
4 2 test4 page 2 is my parent
6 2 test6 post 2 is my parent
5 test5 test content post 5
因此,根据给出的答案显然我可以使用这样的东西:
SELECT ID, post_parent, title, content FROM myTable ORDER BY COALESCE(post_parent, ID), ID
但是,我需要在这里添加另一个转折。假设表中有 16000 条记录以某种随机顺序排列,这意味着后 100 条记录(例如记录 101 - 200 )可能都是后孩子,但我总是想返回孩子的父母总是返回的结果这些孩子。因此,对于上述查询,如果我使用“limit 100, 25”,我最终会得到只有没有父母的孩子的结果。我怎样才能避免这种情况,并让相关的父母总是带着孩子正确地返回?