使用SQL语言中的递归查询进行解决,例如:
WITH RECURSIVE tree (id, parent_id, date, name) AS ( SELECT id, parent_id, date, name FROM self_referencing_table WHERE parent_id IS NULL UNION ALL SELECT srt.id, srt.parent_id, srt.date, srt.name FROM self_referencing_table srt JOIN tree ON srt.parent_id = tree.id ) SELECT id, parent_id, date, name FROM tree ORDER BY parent_id, date;
在上述示例代码中,RECURSIVE关键字用于指出这是一种递归查询,使用了一个通用表达式tree作为递归子句,其中包含列id、parent_id、date和name。在最初的SELECT语句中,只选择那些没有父节点的行。接着,使用UNION ALL关键字,将与递归表中已经选择的行相关联的,有父节点的子行一同选择。这个过程一直持续下去,直到选择所有行,并返回结果。
其中ORDER BY语句,是按照parent_id和date两列进行排序,就完成了按日期分组的自引用表格排序的需求。
上一篇:按日期分组的值求平均余额总和