如何在SQL中对父记录中的记录进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL中对父记录中的记录进行排序相关的知识,希望对你有一定的参考价值。

我有一个包含“ItemId”和“ParentItemId”列的表。我希望结果按父子顺序排序。有了这个,还有其他列需要对数据进行排序。我希望数据基于“itemType”排序。

对于Eg。

 AutoId | itemId | parentItemId | itemType
   1        1       0               3
   2        2       null            4
   3        3       0               6
   4        4       null            5
   5        5        1              9
   6        6        2              9
   7        7        3              9
   8        8        4              9
   9        9        0              2
   10       10       0              1

现在我想要以下面的格式绘制结果

 AutoId | itemId | parentItemId | itemType
   10       10        0              1
   9        9         0              2
   1        1         0              3
   5        5         1              9
   2        2        null            4
   6        6         2              9
   4        4        null            5
   8        8         4              9
   3        3         0              6 
   7        7         3              9

有没有办法可以对这些记录进行排序?

任何帮助,将不胜感激。谢谢。

答案

你可以这样做:

select *
from table1
order by coalesce(parentitemid,itemid), itemid

示例:http://sqlfiddle.com/#!9/32e58e/2

另一答案

对于mysql,使用ifnull表示parentItemId字段

select *
from table
order by IFNULL(parentItemId, itemId), itemId

为了oracle

select *
from table
order by NVL(parentItemId, itemId), itemId
另一答案

取自@hkutluay的SQL Server答案:

select * from table1 order by ISNULL(parentItemID, ItemID), ItemID

以上是关于如何在SQL中对父记录中的记录进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何按月对 PHP 中的 SQL 记录进行排序?

在 Pentaho 中对 200-3 亿条记录进行排序的最佳方法?

SQL按照指定顺序对字段进行排序

2019年6月12日——开始记录并分享学习心得——Python3.7中对列表进行排序

如何在 PHP 中对多维数组进行排序 [重复]

如何在 sql 的循环中对函数求和?