Multi Ordering 4个SQL列,一个查询



环境:MySQL 5.6

SqlTable name = CategoryTable

Sql列
  • CATEGORY_ID添加(INT)
  • CATEGORY_NAME (VARCHAR)
  • 级别(INT)
  • MOTHER_CATEGORY (INT)

我试过了

SELECT
CATEGORY_ID, CATEGORY_NAME , LEVEL , MOTHER_CATEGORY
FROM
CategoryTable 

但是我不知道如何使用ORDER BY来得到那个结果。

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

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查询?

你不是很清楚你想要达到什么目标。我猜您希望使用多级父-子结构进行订购。在mysql 5.6中有一些非常复杂的方法来处理这样的壮举,对于这样的结构来说,数据库并不是很理想,但我自己想出了一些简单的方法,我在自己的应用程序中使用。您可以创建一个特殊的排序字段,该字段为每个记录创建一个由0填充的id组成的路径。

ordering_path_field
/
/0000000001/
/
/0000000001/0000000002
/0000000003
/0000000003/0000000005
/0000000003/0000000005/0000000006

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

相关内容

  • 没有找到相关文章

最新更新