首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按父母分组,按单位列表排序

按父母分组,按单位列表排序
EN

Stack Overflow用户
提问于 2009-11-20 02:05:34
回答 2查看 482关注 0票数 0

我在mySQL表中有一个扁平的页面列表。

代码语言:javascript
复制
ID    | Tab index | Page Name | parent 

页可以是由“父”属性指定的另一个页的子页。

整个列表使用"Tab index“int列排序。

有谁能想出一种方法来查询这个列表

  • 项是由Tabindex
  • 项排序的,它们是另一项的子项,分组在父项后面,并按其表索引(可选)?

排序。

我的mySQL知识没有那么深。

这是一个现有的数据结构,不能更改。

谢谢您提供的任何信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-20 05:18:58

假设列id、页面名、表索引、parent_id

代码语言:javascript
复制
select *,
    coalesce(
        tabindex,
        (select p2.tabindex from page as p2 where p2.id = p.parent_id limit 1),
        0
    ) as ti
from page as p
order by coalesce(ti, p.tabindex)
;

将以"ti“顺序返回这些列,这是以下内容的第一个非空值:

  1. tabindex
  2. the父母的tabindex

这允许您将子表索引保留为空白,并让它们从父表“继承”。此外,如果您希望将默认的排序值推入底部,则可以将0(合并中的第三位arg )替换为(选择max(tabindex) +1 from page)。唯一的警告是,如果子表索引大于以下父表,则它将出现在列表的后面。

票数 1
EN

Stack Overflow用户

发布于 2009-11-20 02:44:09

如果您的页面仅嵌套1层深度,则可以执行... ORDER BY CASE WHEN parent IS NULL THEN id ELSE parent END, parent, tab_id。为了实现多层嵌套的相同结果,您需要递归查询,而MySQL不支持递归查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1767882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档