首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用单个查询多排序4个SQL列

使用单个查询多排序4个SQL列
EN

Stack Overflow用户
提问于 2022-07-16 21:12:44
回答 1查看 31关注 0票数 1

环境: MySQL 5.6

SqlTable名称= CategoryTable

Sql列

(INT)

  • CATEGORY_NAME (VARCHAR)

  • LEVEL (INT)

  • MOTHER_CATEGORY
  • CATEGORY_ID (INT)

我试过了

代码语言:javascript
运行
复制
SELECT
    CATEGORY_ID, CATEGORY_NAME , LEVEL , MOTHER_CATEGORY
FROM
    CategoryTable 

但我不知道怎样才能得到这个结果。

这里的第一行是列,从第二行开始表内容:

代码语言:javascript
运行
复制
CATEGORY_ID         CATEGORY_NAME            LEVEL     MOTHER_CATEGORY
     1              MainCategory               0               0
     2              -SubCategory1              1               1
     3              --SubCategory2             2               2
     4              ---SubCategory3            3               3
     5              2Nd_Main_Category          0               0
     6              -SubCategory1              1               5
     7              --SubCategory2             2               6
     8              ---SubCategory3            3               7

有什么方法可以通过mysql查询实现这样的目标吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-16 21:25:35

你不太清楚你在努力实现什么。我猜您希望使用多层父级子结构来订购。在mysql 5.6中有一些非常复杂的方法来处理这样的壮举,这是一个不太适合这种结构的DB,但是我自己想出了一些我在自己的应用程序中使用的简单方法。创建一个特殊的排序字段,为每个记录创建一个零填充ids的路径。

代码语言:javascript
运行
复制
ordering_path_field
/
/0000000001/
/
/0000000001/0000000002
/0000000003
/0000000003/0000000005
/0000000003/0000000005/0000000006

因此,每个记录都包含每个父记录到根的路径,使用的是零填充ids。然后,你可以按这个字段进行排序,以使它们按正确的顺序排列。缺点是,您必须设置允许的最大级别数,这样排序字段就不会溢出,而且,如果需要的话,将记录移动到新的父级将是很大的痛苦。

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

https://stackoverflow.com/questions/73007686

复制
相关文章

相似问题

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