【发布时间】:2019-09-17 21:06:21
【问题描述】:
我有一个表,其中包含可以按任务分组的任务。
我想知道是否有一种方法可以从表中选择任务,其顺序是将按标题排序的子任务直接放在按标题排序的父任务之下。永远只有一层子节点(即,任何行都不能有一个不在顶层的父节点)
下面是一个示例表和小提琴。在此示例中,所需的输出将是:
TaskID ParentTaskID Title
----------------------------------
6 NULL A Task 3
1 NULL Task 1
7 1 Task 1 A Sub 3
3 1 Task 1 Sub 1
4 1 Task 1 Sub 2
2 NULL Task 2
5 2 Task 2 Sub 1
CREATE TABLE `Tasks` (
`TaskID` int(11) NOT NULL,
`ParentTaskID` int(11) DEFAULT NULL,
`Title` varchar(254) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `Tasks`
ADD PRIMARY KEY (`TaskID`);
ALTER TABLE `Tasks`
MODIFY `TaskID` int(11) NOT NULL AUTO_INCREMENT;
INSERT INTO `Tasks` (`TaskID`, `ParentTaskID`, `Title`) VALUES ('1', NULL, 'Task 1'), ('2', NULL, 'Task 2'), ('3', '1', 'Task 1 Sub 1'), ('4', '1', 'Task 1 Sub 2'), ('5', '2', 'Task 2 Sub 1'), ('6', NULL, 'A Task 3'), ('7', '1', 'Task 1 A Sub 3');
【问题讨论】:
标签: mysql sql sql-order-by