MySQL按父母和孩子排序

麦克风

这是一个简单的表:

id, title, parent, ordering
---------------------------
3242, TitleB, 0, 1
6574, TitleBA, 3242, 1
2346, TitleBB, 3242, 2
2344, TitleA, 0, 1
7346, TitleAC, 2344, 3
3574, TitleAB, 2344, 2
2256, TitleAA, 2344, 1
1435, TitleC, 0, 1
4354, TitleCA, 1435, 1

我正在搜索可以像这样对这些行进行排序和输出的查询:

TitleA
  TitleAA
  TitleAB
  TitleAC
TitleB
  TitleBA
  TitleBB
TitleC
  TitleCA

所以这些行应该由第一个父项排序,然后是它的子项排序。然后是下一个父项,然后是它的子项,依此类推。

父母自己的顺序无关紧要!标题只是为了更好的理解,不能用于排序。重要的是,孩子们会被归入他们的父母之下。

这是我做的最后一个查询:

SELECT *
FROM table t1
     LEFT JOIN table t2
     ON t2.id = t1.parent 
ORDER BY COALESCE(t1.ordering, t2.ordering), t2.ordering   
斯佩克特斯基

部分解决方案可能是以下查询:

SELECT t.title FROM t GROUP BY IF(parent=0,id,parent), 
IF(parent=0,-1,ordering), t.title ORDER BY IF([parent]=0,
id,parent), IF(parent=0,-1,ordering);

结果如下:

TitleC
TitleCC
TitleA
TitleAA
TitleAB
TitleAC
TitleB
TitleBA
TitleBB

要缩进每个组的标题,可能会使用 MS Access 中的报告之类的内容。我已经在 MS Access 中准备好了,所以 MySQL 的语法可能略有不同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择一个父母和所有给定父母或孩子ID的孩子

来自分类Dev

父母和孩子中的点击事件

来自分类Dev

MySQL按列和列值排序

来自分类Dev

SQL查询选择孩子和父母

来自分类Dev

MySQL从表中选择父母和孩子

来自分类Dev

用父母的孩子对PHP数组进行排序

来自分类Dev

如何在Elasticsearch中按孩子数对父母排序

来自分类Dev

获取特定孩子的父母和祖父母

来自分类Dev

让孩子和父母的父母一样宽

来自分类Dev

苗条:在父母和孩子之间转移道具

来自分类Dev

Laravel,由父母和孩子获得结果

来自分类Dev

MySQL组按聚合排序和限制

来自分类Dev

当父母和孩子都执行exec()时等待孩子

来自分类Dev

Linq按孩子数(包括该数字)查询顶级父母

来自分类Dev

修改WordPress中父母和孩子的图标

来自分类Dev

我如何使用班级的父母和孩子?

来自分类Dev

选择一个父母和所有给定父母或孩子ID的孩子

来自分类Dev

父母和孩子的订单查询

来自分类Dev

MySQL排序和按varchar性能分组

来自分类Dev

MySQL按IF排序和排序日期

来自分类Dev

使用CodeIgniter和MySQL按列名排序

来自分类Dev

祖先:按孩子人数排序

来自分类Dev

LINQ查询以按孩子查找父母

来自分类Dev

如何从位置获取父母和孩子的ID

来自分类Dev

mysql分组,联接和按问题排序

来自分类Dev

按孩子的孩子对数组进行排序

来自分类Dev

Caliburn.micro 父母->孩子和孩子->父母互动

来自分类Dev

MySQL按关联表分组和排序

来自分类Dev

结合父母名单和孩子名单